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

时间:2016-03-10 22:38:32

标签: express reactjs webpack react-router production

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:13)

您需要在快速服务器上声明一个“捕获所有”路由,捕获所有页面请求并将其定向到客户端。首先,确保您在服务器上包含path模块:

var path = require('path');

然后,将其放在app.listen之前:

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

这假设您通过脚本标记将bundle.js插入index.html