如果快递服务器使用package.json中的脚本运行,它将不会出现

时间:2019-12-06 09:13:47

标签: node.js express pm2

一切正常,Web服务器正在运行。
但是,当我使用package.json中的脚本运行某些命令时,出现404错误。

下面是生态系统.config.js文件的配置。

module.exports = {
  apps : [{
    name: 'test',
    script: './bin/www',
    instances: 1,
    exec_mode : "cluster",
    autorestart: true,
    watch: false,
    args: ["master"],
    log_date_format: "YYYY-MM-DD HH:mm:ss.SSS",
    max_memory_restart: '1G',
  },
  {
    name: 'test',
    script: './bin/www',
    instances: 7,
    exec_mode : "cluster",
    autorestart: true,
    watch: false,
    args: ["slave"],
    log_date_format: "YYYY-MM-DD HH:mm:ss.SSS",
    max_memory_restart: '1G',
  }]
};

下面是我测试过的package.json中的脚本。

"cross-env NODE_ENV=production pm2 start ecosystem.config.js" // success
"cross-env NODE_ENV=production pm2 delete test & pm2 start ecosystem.config.js" // fail
"cross-env NODE_ENV=production pm2 delete test && pm2 start ecosystem.config.js" // fail
"cross-env NODE_ENV=production node ./bin/www" // success

“ test”是ecosystem.config.js的name属性的值。
运行“ pm2 start生态系统.config.js”,它应该可以工作。
但是,一起使用“ pm2 delete test”命令会在Web服务器上导致404错误。
命令“ pm2 delete test”正常运行。我实际上看到“测试”过程消失后再次运行。
我不知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

您可以做一件事,我不知道它是对还是错,但是将pm2脚本放在一个脚本中是分开的,而在第二个脚本中设置的cross-env使第三个脚本可以同时运行这两个脚本。

示例..

test1: "cross-env NODE_ENV=production",
test2: "pm2 delete test && pm2 start ecosystem.config.js",
test3: "npm run test1 && npm run test2"