【发布时间】: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失败并出现上述相同的错误。