我是这么想的:
app.use(express.static(path.join(__dirname, 'public')));
app.get('/foo', (req, res) => {
// server the public folder again here
});
app.get('/bar/:id', (req, res) => {
// server the public folder again here
});
我正在尝试部署一个使用路由的react应用程序。问题是,我需要指向所有面向用户的路径(so,/about,/contact等,但不是/assets/images/icon.png)回到主页,因为react应用程序使用react-router,一旦应用程序被构建为生产并作为静态站点,转到mysite.com/about给出404,在构建之前不会有。
所以express.static("./path/to/site")
可以是app.use()
的唯一的参数,或者它可以是第二个参数。
对于其他路径,我需要使用app.use()
而不是app.get()
。
到所有静态站点默认不处理的路径,我可以这样写:
app.use(express.static(path.join(__dirname, 'public')));
app.use('*', express.static(path.join(__dirname, 'public')));
要像问题中那样更具体,我可以这样写:
app.use(express.static(path.join(__dirname, 'public')));
app.use('/foo', express.static(path.join(__dirname, 'public')));
app.use('/bar/:id', express.static(path.join(__dirname, 'public')));
在这种情况下,没有被静态站点自动处理并且没有在后面列出的路径将导致404。