【发布时间】:2020-11-28 08:04:16
【问题描述】:
我的 webpack-dev-server 遇到了问题。当我尝试在指定路由加载时,例如“http://localhost:3000/login”,我收到以下消息“Cannot GET /login”。
我已经阅读了文档并看到了许多不同的解决方案,但我没有看到我的配置中的缺陷。我的 webpack 设置是这样的。
webpack.config.js
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'build'),
filename: 'bundle.js',
},
module: [ rules... ],
devServer: {
contentBase: path.join(__dirname, 'build'),
compress: true,
port: 3000
},
}
我的应用脚本如下所示:
"build": "webpack",
"dev": "webpack-dev-server --open"
如果我运行 dev 应用程序将打开到初始路由 - “/”。如果我单击登录链接 - “/login”,它将正常加载。但是如果我在登录时刷新页面,它会抛出“Cannot GET /login”错误。
我的 webpack 配置有什么遗漏或错误吗?
【问题讨论】:
-
我相信您缺少 html5 历史模式的服务器配置。这就是我们如何在不更改页面的情况下更改 url(但用户认为我们正在更改页面)。然后你通过将几乎每个请求(不是资产或其他东西)重定向回你的顶部 /index.html 来修复它。当您将最终结果部署到真实服务器时,您也需要这样做,但使用 devserver,配置如下所示:
devServer: { historyApiFallback: true } -
这为我解决了谢谢!我确实了解路由背后的逻辑,只是知道有一些方法可以使用 webpack-dev-server 解决它,而不必在 dev 上使用服务器。
标签: reactjs webpack webpack-dev-server