我使用ReactJs开发了有关PWA(渐进式Web应用程序)的PoC,以展示如何使用Browser API中的相机,地理位置,麦克风,光传感器等。
我已经为该Web应用程序中的每个功能创建了一条路由,并且在localhost中一切正常。但是,当我在 Azure Wep App Linux服务 上部署我的react应用的npm build版本时,它无法正常工作。我可以访问主页(index.html),从那里可以导航到任何其他页面,但是当我尝试直接通过其URL访问任何路由时,我会收到404错误。除索引页面外,所有URL在手动刷新或写入时均不起作用。
例如: https ://pwa.mypoc.dev/-正常 工作 https://pwa.mypoc.dev/lights- 不起作用
我在天蓝色的“设置”>“常规设置”>“启动命令”上使用了此命令:
pm2 serve /home/site/wwwroot/build --no-daemon
我找到了一个与此相关的问题,但答案没有帮助我,因为我没有使用web.config它,因为它是 运行Node 10 LTS 的
web.config
经过更多研究后,我发现了问题所在。当Linux Azure Web Apps使用pm2服务节点应用程序时,我在查阅官方文档时找到了答案。
PM2是守护程序进程管理器,它将帮助您管理和保持应用程序在线。PM2入门非常简单,它是一个简单直观的CLI,可以通过NPM安装。
https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/#serving-spa- redirect-all-to-indexhtml
只需要将添加--spa选项到 启动命令 对 Azure的Web应用程序的Linux 常规设置 :
--spa
pm2 serve /home/site/wwwroot/build --no-daemon --spa
使用--spa选项pm2将自动将所有查询重定向到index.html,然后react router将发挥作用。