11

我已经编译了我的反应应用程序

react-scripts build

它在 App 的根目录下生成了一个 build\ 文件夹。我正在运行 build\ 文件夹使用

sudo serve -T -p 443 build/

自从我通过-T. 但是我需要使用任何可用的模块来永远运行我的应用程序。我一直在研究节点模块和pm2。我正在尝试通过以下方式使用 pm2:

sudo pm2 serve -T -p 443 build/

它抛出:

error: unknown option `-T'

当我使用时:

sudo pm2 serve -p 443 build/

它适用于控制台,但我无法从 URL 访问我的应用程序

[ec2-user@ip-10-XXX-XX-XXX UI]$ sudo pm2 serve -p 443 build/
[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /usr/local/lib/node_modules/pm2/lib/API/Serve.js in fork_mode (1 instance)
[PM2] Done.
[PM2] Serving /var/www/html/UI/build on port 8080
┌─────────────────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name                │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem       │ user │ watching │
├─────────────────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ static-page-server-8080 │ 0  │ fork │ 26609 │ online │ 0       │ 0s     │ 2%  │ 21.7 MB   │ root │ disabled │
└─────────────────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

有人可以帮我弄这个吗?或者,如果有任何其他方式可以永远在生产环境中运行您的 react 应用程序。

4

5 回答 5

20

您需要使用pm2JSON 配置来运行任意二进制文件:

app.config.json

{
  apps : [
    {
      name      : "your-app",
      script    : "npx",
      interpreter: "none",
      args: "serve -p 8443 -T"
    }
  ]
}

开始:

pm2 start app.config.json

interpreter: "none"告诉pm2在执行时不要将脚本视为 JavaScript 文件,而是将其视为普通二进制文件。

serve如果您在与应用程序配置相同的目录中有二进制文件,则可以serve直接执行而不是npx.

于 2018-05-02T21:35:10.853 回答
5

使用下面的命令它对我有用

首先构建您的反应应用程序,然后在您的应用程序文件夹中点击此命令。

pm2 serve build/ 3000 --name "react-build" --spa
于 2020-09-08T03:42:43.950 回答
3

@bgran 提供了一个很好的解决方案。作为替代方案,我敢建议您可以将此部署添加到 package.json 中的脚本中

"deploy": "pm2 start ./server.sh --name yourAppName",

然后在与 package.json 相同的目录中,创建一个可执行的server.sh

echo "Serving yourAppName!"
serve -s build

不要忘记通过运行使 server.sh 成为可执行文件:

chmod +x server.sh

现在是派对时间!通过运行部署您的应用程序

npm run deploy

完毕!

于 2018-09-12T08:57:08.153 回答
1

如果您愿意使用 pm2 运行 React 项目,请尝试运行以下命令

pm2 start --name <app name<app name>> npm -- start
于 2021-03-24T11:51:49.103 回答
1

创建run.sh文件

将以下命令放入 run.sh 文件中

服务 -s 构建

并保存。

然后运行这个命令。

sudo pm2 start run.sh --name app-name

于 2020-07-12T09:39:14.877 回答