我已经阅读了几个答案,但目前还不清楚如何让Express使用多个视图文件夹。
让我们说Express应用程序包含独立的部分,在子文件夹中组织:
app
+partA
+views
index.html
+partB
+views
index.html
然后我们将每个文件夹设置为视图:
app.set('views', [__dirname + '/partA/views', __dirname + '/partB/views']);
但是如何在第二个文件夹中访问index.html
?
在routes.js中:
res.sendFile('index.html');
将始终发送A部分。
我们也不能使用相对路径:
res.sendFile('/partB/views/index.html');
将触发错误:
Error : Failed to lookup view "/partB/views/index.html" in views directories "/partA/views" or "/partB/views"
那么如何使这项工作?我知道通常的做法是将部件作为视图文件夹的子文件夹,但这不是一个选项。我不希望在/views
,/public
,/lib
等每个部分都有重复的文件夹。
答案 0 :(得分:0)
致电res.sendFile('index.html')
- partA或partB时,您想要什么? Express如何做出选择?
尝试
1. res.sendFile('../../partB/views/index.html');
2.在B部分请求中的中间件app.set('views', '/partB')
上
3. app.set('views', '/')
并在每次res.sendFile('/partB/views/index.html');