我正在努力让我的服务器端渲染和服务工作者在服务器端协作。
关于本地主机的信息 -> 工作正常
这正常工作。服务工作者可以工作并在每次更新时更新我的应用程序。此外,curl localhost:8082
会将我的信息返回给我。
我使用以下命令启动我的应用:npm run ssr
"ssr": "npm run build:ssr && npm run serve:ssr",
"build:ssr": "npm run build:client-and-server-bundles",
"serve:ssr": "node dist/server.js",
"build:client-and-server-bundles": "ng build --prod && npm run webpack:server",
"webpack:server": "webpack --config webpack.server.config.js --progress --colors"
生产信息: -> 不可用
网站使用 HTTPS:https://airdropers.io,网站进程运行在一个关闭的端口上,并且具有 HAPROXY 将流量从 443 端口重定向到 web 服务器的端口。
网站服务器日志显示的问题:无法订阅通知 错误:服务工作者被禁用或此浏览器不支持
其他信息:
本地主机和生产环境下的 Node.js 版本相同:v9.0.0。 我使用以下过程构建生产环境:
- git pull
- npm run build:ssr
- pm2 start dist/server.js
更新于2019年2月23日
我现在有了更深入的理解。 我的问题是我使用 "node dist/server.js" 等 node 命令启动了我的 SSR/PWA 服务器。
据我了解,“node dist/server.js” 对于服务工作者(PWA)不起作用, 我引用了(https://angular.io/guide/service-worker-getting-started)中的一段话:
因为 ng serve 不支持服务工作者,你必须使用单独的 HTTP 服务器在本地测试项目。可以使用任何 HTTP 服务器。下面的示例使用 npm 中的 http-server 包。为了减少冲突的可能性并避免提供过时的内容,请在专用端口上进行测试并禁用缓存。
我无法使用http-server dist/browser
来启动它,因为这样会失去 SSR 的功能。
如何启动我的 PWA/SSR 服务器? 应该使用哪个命令? 应该构建哪个版本?
更新于2019年2月24日
正如 @Gökhan Kurt 提到的那样,服务工作程序与我的 SSR 服务器配合不完美。 我需要 SSR 来进行 SEO,并且我需要服务工作程序来进行浏览器推送通知。 有什么解决方案可以处理浏览器用户推送通知?像 One Signals 这样的第三方库吗?
欢迎提出任何想法和建议来帮助我解决这个问题。 感谢您的支持, Alex