You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决HTML按钮点击后仅展示React代码,无法显示登录页面的问题

问题解决步骤

核心问题原因

你直接链接到了React的源文件chat-app/src/App.js,浏览器会把这个文件当成纯文本渲染,而不是运行编译后的React应用。React项目需要先构建生成可在浏览器中运行的静态文件,才能正常访问。


步骤1:构建React项目

进入你的React项目根目录(即chat-app文件夹),执行构建命令:

npm run build

执行完成后,会在chat-app文件夹下生成一个build目录,里面包含编译好的HTML、CSS和JS文件,这是可以直接在浏览器中运行的静态应用。

步骤2:修改外部HTML的链接

打开你的外部HTML文件,做两处修改:

  1. 删除无效的脚本引入:删掉头部的<script src="chat-app/src/App.js"></script>,因为React源文件无法直接在浏览器中执行。
  2. 修正Connexion按钮的链接:把按钮的href改为构建后的入口页面:
<a href="chat-app/build/index.html" class="nav-connexion">Connexion</a>

步骤3:确认React路由配置正确性

确保你的React项目路由配置(通常在src/index.js或单独的路由文件)正确,未登录时会导向Login页面。示例配置如下:

import React from 'react';
import ReactDOM from 'react-dom/client';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import App from './App';
import Login from './components/Login';
import Protected from './components/Protected';
import ChatRoom from './components/ChatRoom';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Router>
    <Routes>
      <Route path="/" element={<App />}>
        <!-- 受保护的路由,登录后才能访问ChatRoom -->
        <Route element={<Protected />}>
          <Route index element={<ChatRoom />} />
        </Route>
        <!-- 登录路由 -->
        <Route path="/login" element={<Login />} />
        <!-- 如果有注册页面,添加对应的路由 -->
        <Route path="/signup" element={<Signup />} />
      </Route>
    </Routes>
  </Router>
);

验证效果

完成以上步骤后,点击外部HTML的「Connexion」按钮,会跳转到构建后的React应用入口,此时因为用户未登录,App.js中的逻辑会通过<Outlet />渲染Login页面,符合你的需求。


内容的提问来源于stack exchange,提问作者ostoblaze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:38:16