【发布时间】:2021-06-14 07:09:03
【问题描述】:
我正在尝试从 Nodejs 提供我的 react 应用程序,但我收到了一个 GET 错误,这很奇怪,因为当我运行 npm start 并运行 react start 脚本时一切正常,但是一旦我使用 node.js 它不起作用。此外,如果我通过输入或尝试向后导航来导航到路线,则会引发错误。例如,当您第一次导航到主页时,它会将您带到登录页面,如果我转到另一个页面然后回击它会引发 GET 错误,即使它事先工作。
Node.js 服务器
const express = require('express');
const cors = require('cors');
const path = require('path');
const app = express();
require('dotenv').config()
app.use(express.static(path.join(__dirname, 'build')));
app.use(express.json());
app.use(cors());
app.get('/', async (req,res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(3000, () => {
console.log(`Server listening on 3000`);
});
反应 index.js
*/
import React from "react";
import ReactDOM from "react-dom";
import { createBrowserHistory } from "history";
import { Router, Route, Switch, Redirect } from "react-router-dom";
import { Auth0Provider } from "@auth0/auth0-react";
// core components
import Admin from "layouts/Admin.js";
import Authentication from 'layouts/Authentication';
import DashboardPage from "views/Dashboard/Dashboard.js";
import UserProfile from "views/UserProfile/UserProfile.js";
import "assets/css/material-dashboard-react.css?v=1.9.0";
const hist = createBrowserHistory();
ReactDOM.render(
<Auth0Provider
domain={`${process.env.REACT_APP_Auth0_Domain}`}
clientId={`${process.env.REACT_APP_Auth0_ClientID}`}
redirectUri={`http://localhost:3000/dashboard`}
>
<Router history={hist}>
<Switch>
<Route path="/login" component={Authentication} />
<Route path="/dashboard" component={DashboardPage} />
<Route path="/user" component={UserProfile} />
<Redirect from='/' to='/login' />
</Switch>
</Router>,
</Auth0Provider>,
document.getElementById("root")
);
Routes.js
// @material-ui/icons
import Dashboard from "@material-ui/icons/Dashboard";
import Person from "@material-ui/icons/Person";
// core components/views for Admin layout
import DashboardPage from "views/Dashboard/Dashboard.js";
import UserProfile from "views/UserProfile/UserProfile.js";
import Authentication from './layouts/Authentication';
const dashboardRoutes = [
{
path: "/dashboard",
name: "Invoice Dashboard",
icon: Dashboard,
component: DashboardPage,
},
{
path: "/login",
name: "Login",
icon: Dashboard,
component: Authentication
},
{
path: "/user",
name: "User Profile",
icon: Person,
component: UserProfile,
}
];
export default dashboardRoutes;
【问题讨论】:
-
Routes.js文件是否相关或在任何地方使用?它似乎重复了 index.js 文件中定义的路由。您是否尝试使用服务器端渲染 (SSR)? reactjs.org/docs/react-dom-server.html -
听不懂他想说什么,能不能说清楚一点
-
路由文件在另一个地方用于帮助在导航栏中制作项目,仅此而已。是的,尝试进行服务器端渲染,我所有的反应应用程序都使用这个设置,这是我第一次遇到这个问题时不知道我错过了什么。
标签: javascript node.js reactjs authentication react-router