因此,我需要Express始终提供静态目录。这些是有关如何仅提供index.html的大量指南,例如here。他们使用以下代码:
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
但是对我来说,问题是'/ *'路由仅提供index.html,而不提供它所提取的任何文件,例如main.js。我基本上需要我的应用程序始终访问“ build /”,无论访问者在哪条路径上,因为路由是由React Router的前端处理的。因此,例如:
app.get('/*', function (req, res) {
res.redirect('/');
});
不起作用,因为它删除了路径。登陆“ / aa / bb / cc”的用户应获得与“ /”上的用户相同的内容(express.static)。我尝试过app.use('/*', express.static(...)
,但是这会在浏览器中导致SyntaxError: expected expression, got '<'
,因为似乎每个请求都被路由到静态index.html文件?
不要按照Express文档的说明,将其作为app.get
放在主app.js文件中的app.use
中:>
为了回答我自己的问题,我找到了这个答案:https://expressjs.com/en/starter/static-files.html