澳门足球盘

万博manbetⅹ官网下载球探网bet007com

最近在pm2.log中看见如下错误导致无法启动服务:

path.js:1144

cwd = process.cwd();

^

Error: ENOENT: no such file or directory, uv_cwd

at Error (native)

at Object.resolve (path.js:1144:25)

at Function.Module._resolveLookupPaths (module.js:361:17)

at Function.Module._resolveFilename (module.js:431:31)

at Function.Module._load (module.js:388:25)

at Module.require (module.js:468:17)

at require (internal/module.js:20:19)

at Object. (/usr/lib/node_modules/pm2/lib/ProcessContainer.js:12:15)

at Module._compile (module.js:541:32)

at Object.Module._extensions..js (module.js:550:10)

于是google之,在https://github.com/Unitech/pm2/issues/2057找到方法解决,记录如下:

首先导致这个错误是因为pm2最早启动的目录被删除了(删除后重建同名目录也是无用的)。

什么叫最早启动的目录呢?就是在命令行下第一次执行pm2时所在的目录,比如新装系统,在 /home/deploy 下第一次执行 pm2命令,那么 /home/deploy 就是最早启动的目录。再比如杀掉pm2进程后,再次在某个目录下执行了pm2命令,那这个目录也是最早启动的目录。

理解了最早启动的目录,那么当pm2启动后,把该目录删除过一次,则再次用pm2去启动node服务时就会报以上错误。

pm2 issues-2057中也有人指出了验证方法,如下:

先找到pm2的进程pid:ps ax | grep PM2

然后查询该进程执行时所在的目录(用上一步得到的pid替换下面命令的PM2_PID)ls -l /proc/PM2_PID/cwd

最后根据结果,如下的(deleted)标注,就说明该目录被删除过。$ ls -l /proc/24016/cwd

lrwxrwxrwx 1 root root 0 Feb 4 17:04 /proc/24016/cwd -> /home/nodejs/deploy(deleted)

验证原因后,解决方法就是重新在另外一个安全一些的目录重启pm2进程。

先用pm2 kill命令杀掉pm2进程,然后 cd ~ 到home目录,执行 pm2 -v 命令,这样就在一个相对安全的目录启动了pm2。最后再去部署node服务就可以了。

https://cssor.com/pm2-deploy-process-cwd-error.html

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

https://www.pick2012.cn/style/images/nopic.gif
我要收藏
个赞
被踩
分享到
分享
评论
首页