reactjs - 在具有 ID 的路径上出现白页错误 - 反应路由器 dom
问题描述
我正在尝试在重置密码时使用 id。虽然其他页面工作正常,但带有 id 的重置页面在部署时抛出了一个白页。但是,重置页面在 localhost 中工作。
设置路由路径:
import React from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import { UserProvider } from "./UserContext";
import ForgotPass from "./components/ForgotPass";
import ResetPassword from "./components/ResetPass";
import RegisterUser from "./components/Register";
import UserLogin from "./components/UserLogin";
import Dashboard from "./components/Dashboard";
function App() {
return (
<Router>
<UserProvider>
<div className="container px-0">
<Switch>
<Route exact path="/register" component={RegisterUser}></Route>
<Route exact path="/dashboard" component={Dashboard}></Route>
<Route exact path="/forgot-password" component={ForgotPass}></Route>
<Route path="/reset/:id" component={ResetPassword}></Route>
<Route exact path="/" component={UserLogin}></Route>
</Switch>
</div>
</UserProvider>
</Router>
);
}
export default App;
错误日志 - Chrome:
2.2ea4f433.chunk.js:1 Uncaught SyntaxError: Unexpected token '<'
main.93407c2a.chunk.js:1 Uncaught SyntaxError: Unexpected token '<'
manifest.json:1 Manifest: Line: 1, column: 1, Syntax error.
错误日志 - 火狐:
The stylesheet https://proj-resetpassword.netlify.app/reset/static/css/2.61b4cb56.chunk.css was not loaded because its MIME type, “text/html”, is not “text/css”. 7667
The stylesheet https://proj-resetpassword.netlify.app/reset/static/css/main.21b13064.chunk.css was not loaded because its MIME type, “text/html”, is not “text/css”. 7667
The script from “https://proj-resetpassword.netlify.app/reset/static/js/main.93407c2a.chunk.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type.
7667
The script from “https://proj-resetpassword.netlify.app/reset/static/js/2.2ea4f433.chunk.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type.
7667
Uncaught SyntaxError: expected expression, got '<'
2.2ea4f433.chunk.js:1
Uncaught SyntaxError: expected expression, got '<'
main.93407c2a.chunk.js:1
以下是我在 React 中的重置页面
import React, { useState } from "react";
import { Link, useHistory } from "react-router-dom";
function ResetPassword() {
const history = useHistory();
const [newpass, setNewpass] = useState("");
const [repeatpass, setRepeatpass] = useState("");
const handleSubmit = async (e) => {};
return (
<div className="card card__">
<p className="title">Update Password</p>
<div className="reset-img">
<img
src="/imgs/key.jpeg"
className="card-img-top real-img"
alt="reset-password-img"
/>
</div>
<div className="card-body">
<p className="hidden invalid">
<small className="text-danger">
Password do not match. Please try again.
</small>
</p>
<p className="hidden valid">
<small className="text-success">
You have successfully registered your new password.
</small>
</p>
<p className="hidden unauthorized">
<small className="text-danger">
Unauthorized Access. Verify your email again.
</small>
</p>
<form className="reset-form" onSubmit={handleSubmit}>
<div className="form-group">
<label htmlFor="inputPass1">New Password</label>
<input
type="password"
className="form-control my-2"
id="inputPass1"
aria-describedby="passHelp"
required
onChange={(e) => setNewpass(e.target.value)}
/>
<label htmlFor="inputPass2">Repeat Password</label>
<input
type="password"
className="form-control my-2"
id="inputPass2"
aria-describedby="passHelp"
required
onChange={(e) => setRepeatpass(e.target.value)}
/>
</div>
<button type="submit" className="btn btn-primary my-2">
Reset
</button>
</form>
<div className="links">
<Link to={"/forgot-password"} className="link">
Forgot Password
</Link>
</div>
</div>
</div>
);
}
export default ResetPassword;
UserLogin、RegisterUser、Dashboard、ForgotPass - 除 ResetPassword 页面外,这些页面都显示良好。
请帮我找出解决方案。谢谢!
解决方案
问题是您没有渲染组件,而在定义Router
.
您需要Router
从函数(定义为函数的组件)或从Component
扩展类的渲染函数返回 JSX。JavaScript 运行时不知道如何处理现在的<Router>{/*...*/}</Router>
JSX。看看你的ResetPassword
组件在做什么,并作为一个定义为函数的组件的示例,或者查看组件和道具文档。
此外,您可能希望在该文件中导入您的RegisterUser
、Dashboard
、ForgotPass
、ResetPassword
和UserLogin
组件 - 否则运行时将无法找到这些引用。
作为函数的组件
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
function MyRouterComponent() {
return (
<Router>
{ /* ... */ }
</Router>
);
}
作为Component
扩展类的组件
import React, { Component } from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
class MyRouterComponent extends Component {
render() {
return (
<Router>
{ /* ... */ }
</Router>
);
}
}
推荐阅读
- linux - 纱线安装:EACCES:权限被拒绝,取消链接纱线完整性
- javascript - 当整个列中包含带有下拉列表的单元格时如何应用搜索(jQuery DataTables)?
- java - Spring Boot扩展配置属性元数据json“提示”地图不起作用
- javascript - 如何在 Vue 指令中定义方法?
- html - Firefox 和 chrome 默认边框
- reactjs - React Redux 与在堆栈上发现的 React 本机意外上下文。此错误可能是由 React 中的错误引起的。请提出问题
- php - 某些网站的网址在登录后不会更改,例如 facebook.com 在登录后仍然是 facebook.com?
- docker - 无法从私有 Docker 注册表中删除图像
- jenkins - Jenkins 负载平衡 - 其他免费系统上的自动路由
- jquery - 将 jquery 插件转换为角度组件