如何配置pm2 serve命令为多页React应用提供服务?

时间:2018-08-29 12:50:51

标签: reactjs pm2 serve

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

3 个答案:

答案 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>