小编典典

React路由器直接链接在Azure Web App Linux上不起作用

reactjs

我使用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


阅读 322

收藏
2020-07-22

共1个答案

小编典典

经过更多研究后,我发现了问题所在。当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 常规设置

pm2 serve /home/site/wwwroot/build --no-daemon --spa

使用--spa选项pm2将自动将所有查询重定向到index.html,然后react router将发挥作用。

2020-07-22