在跟往常一样发布项目的时候,遇到了一个报错,这个报错似曾相识,但是由于时间太久,已经不太记得了。于是这里记录下。
现场情况:使用 pm2 发布 nextjs 项目
报错如下:
/share/yarn/bin/yarn:2
7|blog | argv0=$(echo "$0" | sed -e 's,\\,/,g')
首先判断不是代码相关的问题,因为我已经在本地可以正常启动和打包了。 那么就先问问GPT吧。
1、GPT是这么提示我的:
出现这个问题可能是因为在 pm2 中配置的 yarn 路径不正确或环境变量设置有误
-
检查 Yarn 安装路径:
确保yarn安装正确并且路径正确。通过运行以下命令确认yarn的路径:which yarn这将返回
yarn的安装路径,比如/usr/local/bin/yarn。 -
更新 PM2 配置:
如果pm2使用的yarn路径不正确,更新pm2配置文件或启动脚本中的路径。 -
检查 Node.js 和 Yarn 环境:
确保pm2启动时使用的Node.js和yarn版本是正确的。可以在pm2配置中指定环境变量:pm2 start app.js --interpreter $(which node) --interpreter-args "$(which yarn)" -
使用绝对路径启动:
在pm2配置中直接使用yarn的绝对路径:pm2 start yarn --name my-nextjs-app -- start
2、 Stack Overflow 上是这么说的:
[node.js - 使用 pm2 执行 yarn start 时出现错误,而 npm start 工作正常 - 堆栈溢出](https://stackoverflow.com/questions/45887206/using-pm2-to-do-yarn-start-gives-error-while-npm-start-works-fine)
PM2 的默认解释器设置为 .`node`,要正确运行 yarn(bash 脚本),您必须将 pm2 的解释器设置为:`bash`
pm2 start yarn --interpreter bash --name api -- start
或者 ecosystem.config.js
module.exports = {
apps : [{
name : 'yarn',
script : 'yarn',
args : 'start',
interpreter: '/bin/bash',
env: {
NODE_ENV: 'development'
}
}]
};
搜了下,最原始的出处在这里, 在 pm2 start 命令中使用时出现 yarn 错误。·问题 #6124 ·纱线PKG/纱线
并不打算深究这些,我最后用了npm 。。。又更新了下自己的笔记,记录了应该如何打包发布运行。毕竟半年没有更新项目了,忘得差不多了。
不得不说,有时候前端的时间都浪费在这里了。。