【问题标题】:Getting errors when trying to start app via yarn & pm2尝试通过 yarn 和 pm2 启动应用程序时出错
【发布时间】:2021-07-04 17:06:52
【问题描述】:

尝试通过 yarn 和 pm2 启动 node (next.js) 应用程序时收到错误消息。我的 google fu 没有发现任何有用的东西。我怀疑问题出在 nvm 上,尽管我没有足够的经验来理解如何解决它。

Ubuntu 20.04
nvm 0.38.0
节点 v14.5.0
纱线 1.22.10
pm2 4.5.6

ecosystem.config.js

module.exports = {
  apps: [
    {
        name: "next",
        script: "yarn",
        interpreter: "bash",
        args: "start:next",
        instances: 1,
        env: {
            NODE_ENV: "development",
        },
        env_staging: {
            NODE_ENV: "production",
        },
        env_production: {
            NODE_ENV: "production",
        }
    }
]

}

起始文件通过:

pm2 start ecosystem.config.js --env staging

或

pm2 start yarn --interpreter bash --name next -- start:next

接收错误:

[TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)
/home/deploy/.pm2/pm2.log last 15 lines:
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] online
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] exited with code [2] via signal [SIGINT]
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] starting in -fork mode-
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] online
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] exited with code [2] via signal [SIGINT]
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] starting in -fork mode-
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] online
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] exited with code [2] via signal [SIGINT]
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] starting in -fork mode-
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] online
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] exited with code [2] via signal [SIGINT]
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] starting in -fork mode-
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] online
PM2        | 2021-04-08T18:33:28: PM2 log: App [express:0] exited with code [2] via signal [SIGINT]
PM2        | 2021-04-08T18:33:28: PM2 log: Script /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn had too many unstable restarts (16). Stopped. "errored"

/home/deploy/.pm2/logs/express-out.log last 15 lines:
/home/deploy/.pm2/logs/express-error.log last 15 lines:
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 3: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 4: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 5: use strict: command not found
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 7: var: command not found
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 8: syntax error near unexpected token `('
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 3: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 4: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 5: use strict: command not found
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 7: var: command not found
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 8: syntax error near unexpected token `('
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 3: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 4: /bin: Is a directory
0|express  | /home/deploy/.nvm/versions/node/v14.5.0/bin/yarn: line 5: use strict: command not found

【问题讨论】:

  • 你能分享你的项目目录结构吗? Yarn 是一个开发工具,用于管理依赖项并运行您在 project.json 中定义的任何脚本。为生产构建应用程序后,您将使用 pm2 运行该应用程序。您正在尝试运行 YARN 本身,但这是行不通的。一旦你分享你的目录,我就会提供答案。
  • 在我的 package.json 脚本中 start:next 运行 next start。如果我在项目目录中yarn start:next,它运行良好。通过 pm2 中的 yarn 启动应用程序的命令,您将使用 pm2 start yarn --interpreter bash --name appname -- start,将 start 替换为 package.json 中定义的任何脚本。据我所知,在生态系统文件中,我基本上在做同样的事情。
  • 另外,请注意pm2 start yarn --interpreter bash --name appname -- start:next 失败并出现上述相同的错误。

标签: node.js yarnpkg pm2 nvm


【解决方案1】:

--interpreter bash 是你的问题。 yarn 不是 bash 脚本,而是看起来像是 JS 程序的东西。这样做:

pm2 start yarn --name appname -- start:next

【讨论】:

  • 工作,谢谢!最近一定发生了一些变化。我一直在这样做。 stackoverflow.com/questions/59046837/…
  • 我认为 Yarn v2 迁移到了 Node?​​span>
  • 很好,对于任何在使用端口规范的命令时遇到“问题”的人:我运行pm2 start yarn --name appname -- start -p 80,基本上它运行next start -p 80(对于nextjs的情况)。
猜你喜欢
  • 2018-12-20
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2015-05-18
  • 2018-05-26
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多