我有一个角度通用的应用程序。当直接使用以下命令从节点(localhost:4000)运行时,所有方法都可以正常工作: npm运行build:ssr npm运行serve:ssr
对于生产环境,我需要在子路径(服务器名称/应用名称)而非根目录下提供应用程序。网络服务器是apache,我使用proxypass如下: ProxyPass“ / appname /”“ http://localhost:4000/”
现在出现问题: 对于SSR,baseref为“ /”,而对于客户端渲染,baseref为“ / appname”。这意味着,无论是在根上使用node / express的SSR还是在服务器名/应用名上运行该应用程序的客户端都找不到在index.html(main.js等)中链接的文件
是否可以为SSR和CSR提供不同的baseref?
我可以想到的一种破解方法是将SSR-app托管在“ localhost:4000 / appname”上……但是我不知道如何在我的server.ts中进行配置……
任何帮助,不胜感激!
答案 0 :(得分:0)
至少我现在让节点在同一href下运行SSR-app
const allowed = [
'.js',
'.css',
'.png',
'.jpg',
'.svg',
'.woff',
'.ttf'
];
const disallowed = [
'.map'
]
app.get('/appname/*', (req, res) => {
if (allowed.filter(ext => req.url.indexOf(ext) > 0).length > 0 && disallowed.filter(ext => req.url.indexOf(ext) > 0).length == 0) {
res.sendFile(resolve(DIST_FOLDER + req.url.replace("appname/", "")));
} else {
res.render('index', {req})
//res.sendFile(path.join(__dirname, 'client/dist/client/index.html'));
}
});