服务生产的正确方法是什么反应了webpack构建的bundle.js?

Kom*_*hol 15 production express reactjs webpack react-router

我有一个简单路线的应用程序.当我使用webpack开发服务器时它工作正常.现在,我想将它部署到我的生产服务器.所以我构建了bundle.js.但是,我不确定在服务器上提供文件的正确方法是什么.

大多数博客文章都停止构建bundle.js或将其部署到heroku或nodejutsu.如果我想在自己的服务器上提供服务,该怎么办?

我尝试在快速服务器上提供文件,但我在浏览器中收到此错误(这条路径与webpack-dev-server一样正常).
http:// localhost:3000/app
无法GET/app

我有这样简单的路线.登陆页面/工作正常,但我无法访问/ app路由

var Routes = () => (
    <Router history={browserHistory}>
        <Route path="/" component={Landing}>
        </Route>
        <Route path="/app" component={App}>
        </Route>
    </Router>
)
Run Code Online (Sandbox Code Playgroud)

这是我的server.js.我把bundle.js,index.html放在./public中

app.use(express.static('./public'));
app.listen(port, function () {
    console.log('Server running on port ' + port);
});
Run Code Online (Sandbox Code Playgroud)

Ric*_*yon 13

您需要在快速服务器上声明一个"捕获所有"路由,捕获所有页面请求并将它们指向客户端.首先,确保您在path服务器上包含该模块:

var path = require('path');
Run Code Online (Sandbox Code Playgroud)

然后,把它放在app.listen:

app.get('*', function(req, res) {
  res.sendFile(path.resolve(__dirname, 'public/index.html'));
});
Run Code Online (Sandbox Code Playgroud)

这是假设你要插入bundle.jsindex.html通过脚本标签.

  • 遵循此方法,当完成Get请求时,它返回html文件作为响应 (2认同)
  • @tscizzle是的,我通过更改某些行的顺序来解决它,只是app.get('*',function(req,res){res.sendFile(path.resolve(__ dirname,'public / index.html'));; }); 最后,在其他路由和server.listen(port)之前; (2认同)