我已经为此苦苦挣扎了一段时间,并且我开始认为我的方法是完全错误的。如果是这种情况,请告诉我并提供指导。
我有两个角度应用程序,一个是常规应用程序(用于桌面),一个是离子应用程序(用于移动设备)。我使用这样的快递服务器为他们服务:
app.use(expressStatic(path.join(__dirname, '/../web-app'), { index: false }));
app.use(expressStatic(path.join(__dirname, '/../ionic-app'), { index: false }));
app.get('*', function(req, res) {
if (isMobile(req)) {
res.sendFile(path.join(__dirname, '/../ionic-app/index.html'));
} else {
res.sendFile(path.join(__dirname, '/../web-app/index.html'));
}
});
该文件有效,但是我最近使用ng add @angular/pwa ...
命令将它们(都)设置为PWA,并且没有更改与该处服务人员相关的任何内容。
现在,我注意到该解决方案存在一个问题。如果这两个位置/../web-app
/../ionic-app
都具有一个名称相同的文件(例如ngsw-worker.js
,manifest.webmanifest
),则在被要求像<link rel="manifest" href="manifest.webmanifest">
这样的位置时将忽略该文件。我不确定会为谁服务。
我试图通过用以下代码替换上面的代码来解决该问题:
app.get('*.*', (req, res, next) => {
if (isMobile(req)) {
expressStatic(path.join(__dirname, '/../ionic-app'))(req, res, next);
} else {
expressStatic(path.join(__dirname, '/../web-app'))(req, res, next);
}
});
app.get('*', function(req, res) {
if (isMobile(req)) {
res.sendFile(path.join(__dirname, '/../ionic-app/index.html'));
} else {
res.sendFile(path.join(__dirname, '/../web-app/index.html'));
}
});
那解决了文件“被覆盖”的问题,但是我发现至少还有一个问题。遵循这些步骤:
我知道这是一种情况,不适用于大多数用户,但仍然希望它能正常工作。此外,它会取消在用户清除缓存之前离线运行应用程序的功能。
我还担心这不是很“干净”或“靠书”的解决方案。
根据设备(台式机/移动设备)提供两种不同版本的应用程序的“进入”,“优雅”解决方案是什么?
我宁愿使解决方案尽可能简单,使用Firebase或heroku进行托管,因此不要使用复杂的nginx解决方案,等等。
我注意到互联网上的各种行为:
facebook.com
-> m.facebook.com
)将您重定向到其他路径-这不是我想到的解决方案。