首页 > 解决方案 > 使用 pm2 在服务器上运行 React 构建

问题描述

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

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 应用程序。

标签: reactjspm2foreverservereact-scripts

解决方案


您需要使用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.


推荐阅读