如何在pm2下运行nuxt?

Edw*_*ard 5 node.js npm pm2 ubuntu-16.04 nuxt.js

我有2个nuxt项目需要在服务器上运行。每当我在本地运行该应用程序时,它似乎都可以使用:npm run dev,但是在服务器上,它需要在子进程下运行,因此我使用pm2来实现。但是,每当我开始使用pm2运行相同的npm脚本时,该过程都会出错。

用于此的命令是:sudo pm2 start npm --name "dev" -- dev,即使当我分别运行应用程序时也会出错。sudo pm2 start npm --name "app1" -- app1:devsudo pm2 start npm --name "app2" -- app2:dev


package.json

{
    ...
    "scripts": {
        "app1:dev": "nuxt --config-file src/app1/nuxt.config.js -p=3000",
        "app2:dev": "nuxt --config-file src/app2/nuxt.config.js -p=4000",
        "dev": "concurrently \"npm run app1:dev\" \"npm run app2:dev\"",
    },
    "dependencies": {
        ...
    },
    "devDependencies": {
        "concurrently": "^3.6.0",
        "cross-env": "^5.2.0"
    }
}
Run Code Online (Sandbox Code Playgroud)


pm2日志

/home/ubuntu/.pm2/pm2.log :
PM2        | [2018-08-16T10:05:55.046Z] PM2 log: ===============================================================================
                                                                ...
PM2        | [2018-08-16T10:07:32.825Z] PM2 log: App [app1] with id [0] and pid [11135], exited with code [1] via signal [SIGINT]
PM2        | [2018-08-16T10:07:32.827Z] PM2 log: Starting execution sequence in -fork mode- for app name:app1 id:0
PM2        | [2018-08-16T10:07:32.828Z] PM2 log: App name:app1 id:0 online
PM2        | [2018-08-16T10:07:33.105Z] PM2 log: App [app1] with id [0] and pid [11145], exited with code [1] via signal [SIGINT]
PM2        | [2018-08-16T10:07:33.106Z] PM2 log: Starting execution sequence in -fork mode- for app name:app1 id:0
PM2        | [2018-08-16T10:07:33.108Z] PM2 log: App name:app1 id:0 online
PM2        | [2018-08-16T10:07:33.383Z] PM2 log: App [app1] with id [0] and pid [11155], exited with code [1] via signal [SIGINT]
PM2        | [2018-08-16T10:07:33.383Z] PM2 log: Script /usr/local/bin/npm had too many unstable restarts (16). Stopped. "errored"

/home/ubuntu/.pm2/logs/app1-error.log :
/home/ubuntu/.pm2/logs/app1-out.log :
                            ...
0|app1   | Specify configs in the ini-formatted file:
0|app1   |     /home/ubuntu/.npmrc
0|app1   | or on the command line via: npm <command> --key value
0|app1   | Config info can be viewed via: npm help config
0|app1   |
0|app1   | npm@5.6.0 /usr/local/lib/node_modules/npm
0|app1   |
0|app1   | Usage: npm <command>
0|app1   |
0|app1   | where <command> is one of:
0|app1   |     access, adduser, bin, bugs, c, cache, completion, config,
0|app1   |     ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
0|app1   |     explore, get, help, help-search, i, init, install,
0|app1   |     install-test, it, link, list, ln, login, logout, ls,
0|app1   |     outdated, owner, pack, ping, prefix, profile, prune,
0|app1   |     publish, rb, rebuild, repo, restart, root, run, run-script,
0|app1   |     s, se, search, set, shrinkwrap, star, stars, start, stop, t,
0|app1   |     team, test, token, tst, un, uninstall, unpublish, unstar,
0|app1   |     up, update, v, version, view, whoami
0|app1   |
0|app1   | npm <command> -h     quick help on <command>
0|app1   | npm -l           display full usage info
0|app1   | npm help <term>  search for help on <term>
0|app1   | npm help npm     involved overview
0|app1   |
                          ...
Run Code Online (Sandbox Code Playgroud)

这一切是什么意思,pm2不能识别npm命令吗?我在这里缺少参数吗?...

额外信息:
服务器:Ubuntu 16.04
npm版本:5.6.0
nuxt版本:pm21.4.2
版本:3.0.3
节点版本:8.11.1

小智 11

下面的代码:

pm2 start npm --name "anyName" -- run dev
Run Code Online (Sandbox Code Playgroud)


JC9*_*C97 5

要使多个nuxt实例与pm2一起使用,您需要指向中的nuxt-start脚本node_modules/nuxt/bin/nuxt-start

本指南对此进行了很好的解释。总结:你需要一个生态系统为您的应用程序(ecosystem.config.js),您可以设置您的应用程序的所有给定的参数配置。是带有所有可用参数的列表。

您的外观应如下所示:

module.exports = {
  apps: [
    {
      name: 'app1',
      port: 3000,
      script: './node_modules/nuxt/bin/nuxt-start',
      cwd: '/home/user/your-nuxt-project/app1',
      env: {
        NODE_ENV: 'development'
      },
      env_production: {
        NODE_ENV: 'production'
      }
    },
    {
      name: 'app2',
      port: 4000,
      script: './node_modules/nuxt/bin/nuxt-start',
      cwd: '/home/user/your-nuxt-project/app2',
      env: {
        NODE_ENV: 'development'
      },
      env_production: {
        NODE_ENV: 'production'
      }
    }
  ]
};
Run Code Online (Sandbox Code Playgroud)

然后简单地cd到您的项目目录并运行sudo pm2 start。它将自动找到配置文件并同时运行两个应用程序。

  • 新版本的 nuxt 不再使用 nuxt-start 了吗?我似乎无法在 node_modules/nuxt/bin 中找到它。该文件夹中只有 nuxt.js。我正在使用 2.4.3 (2认同)