关于使用Express server设置SSR的官方教程的后续内容:
https://angular.io/guide/universal#configure-for-universal
本教程将设置如下路径:
...
const DIST_FOLDER = join(process.cwd(), 'dist');
...
app.set('views', join(DIST_FOLDER, 'browser'));
这在本地服务器上运行得很好。
但是,一旦部署到服务器(由Nginx提供支持),就会出现以下错误:
错误:无法在视图目录中查找视图“索引”
“/home/user\u name/dist/browser”
在服务器响应.render(/var/proj\u名称)/服务器.js:53701:7)
在下一个(/var/proj\u name)/服务器.js:46330:13)
在路由调度(/var/proj\u名称)/服务器.js:46305:3)
在层句柄[作为处理请求](/var/proj\u name)/服务器.js:46582:5)
at/var/proj\u名称/服务器.js:45805:22
at参数(/var/proj\u name)/服务器.js:45878:14)
at参数(/var/proj\u name)/服务器.js:45889:14)
如何正确处理这个问题,使应用程序在本地(用于开发)和生产服务器上都能正常工作?
编辑:
__dirname
应用程序获取('
.
但这在本地和生产服务器上都失败:
错误:在视图目录“/browser”中查找视图“索引”失败
编辑2:
我设法通过搬家来完成这项工作
browser
文件夹到
~/dist/browser
看起来失败的代码在
服务器.ts
// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render('index', { req });
});
在本地运行时
const DIST_FOLDER = join(process.cwd(), 'dist');
返回正确的输出。但是,当在真正的服务器(Ubuntu,Nginx)上运行时,它会得到:
/home/<user_name>/dist/browser
__目录名
没用。
所以需要一些方法来确定
res.render('index', { req });