我使用Create-React-App创建了ReactJS应用程序,并希望将其部署在Linux服务器上。我遵循了一个教程,该教程通过安装pm2并提供服务,然后在运行命令之后非常简单地演示了如何做到这一点:
npm run build
我运行了实际托管应用程序的命令:
pm2 serve build
现在的问题是,当我访问的网址不是基本网址时,或者当我在主页以外的页面上单击从浏览器重新加载时,都会出现404 not found错误。
我了解之前的命令仅用于提供单个页面。我的问题是:有没有办法使例如http://myserver:port/a的网址进入我的应用程序中的路由?或至少转到http://myserver:port/?
我已经在同一台服务器上安装了Nginx,因为我正在使用它来托管Flask Python应用程序,但是我对此并不陌生,并且由于遇到了一些困难,我正在寻找一种可行的简单方法来托管Python应用。
请注意,我只使用React,没有Redux,express或任何相关的数据库。我也在我的应用程序内使用BrowserRouter。
答案 0 :(得分:1)
pm2 serve build
仅静态提供构建文件夹。因此http://myserver:port/a将在构建文件夹中请求名为“ a”的文件。如果找不到,则返回404
要使您的服务器能够处理其他路由,您不能使用pm2 serve。相反,您应该通过pm2启动flask服务器。您可以看看How to run a python script like pm2 for nodejs
答案 1 :(得分:1)
'/'
具有单页应用程序模式(https://pm2.keymetrics.io/docs/usage/expose/#serving-spa-redirect-all-to-indexhtml)
从文档中
要自动将所有查询重定向到index.html,请使用--spa选项:
pm2 serve
或者如果使用pm2 serve build --spa
文件:
ecosystem.config.js
答案 2 :(得分:0)
我使用 Vue.js,“npm run build”命令将静态文件生成到 dist 文件夹中,pm2 命令如下所示:
pm2 --name <appName> serve --spa <staticFolder> <port>