我有一个简单路线的应用程序。当我使用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);
});
答案 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
。