Javascript react router dom项目在与webpack绑定时因publicPath而中断

Javascript react router dom项目在与webpack绑定时因publicPath而中断,javascript,reactjs,webpack,react-router-dom,Javascript,Reactjs,Webpack,React Router Dom,我在用React路由器dom做一个项目 在我的网页中,我设置: output: { filename: 'app.js', path: path.join(__dirname, 'dist'), publicPath: '/' }, devServer: { historyApiFallback: true }... 除非我错了,否则我需要publicPath,以便路线正常运行 当我使用webpack dev server-inline-hot-

我在用React路由器dom做一个项目

在我的网页中,我设置:

output: {
    filename: 'app.js',
        path: path.join(__dirname, 'dist'),
        publicPath: '/'
},
devServer: {
    historyApiFallback: true
}...
除非我错了,否则我需要publicPath,以便路线正常运行

当我使用webpack dev server-inline-hot-process运行项目时, 一切正常

但当我尝试构建并捆绑它时,我会遇到以下错误:

html:11获取file:///C:/app.js net::找不到错误文件


你知道什么是正确的方式来配置它,以便在项目使用webpack dev server正常运行时,构建可以正常运行吗?

那么我们来看看如何从中运行react应用程序file:///.

更改输出部分的网页包配置,使publicPath:“./”,例如,如果index.html和捆绑文件位于同一目录中:

entry: ...
output: {
    path: path.resolve(__dirname, 'public'),
    filename: '[name].js',
    publicPath: './'
}
这将允许将捆绑文件加载到与html相同的目录中,而不是在当前web的根目录中,就像在publicPath:'/'的情况下一样

如果在chrome中测试,请启用允许访问chrome扩展名中的文件URL,如所述。 如果使用路由,请使用HashRouter而不是BrowserRouter v4。有关这方面的更多信息,请参阅。
在你构建应用程序之后,你是如何为其提供服务的?为应用程序提供服务的服务器需要了解客户端路由。你能试着用ws-spa index.html从构建文件夹中为你的应用程序提供服务吗?@margaretkru我试图在没有服务器的情况下运行它,只需打开我的index.html,为什么我需要服务器?我不能静态运行吗?它实际上可以工作,但我猜您需要将html中的路径从/app.js更改为/app.js,以将文件加载到与html相同的目录中,而不是当前web的根目录中,然后启用允许访问Chrome扩展名中的文件URL,如所述。但是,如果您的应用程序是从file:///.btw,您使用的是HashRouter还是BrowserRouter?根据您的情况,如果从文件系统提供服务并使用HashRouter,您的路由将起作用,否则您必须设置一个web服务器。@margaretkru true,true:我使用的是HashRouter