NVM安装Nodejs后Forever结合Crontab自启动应用报错如何解决
根因分析
报错中from '/'说明crontab执行@reboot任务时的默认工作目录是系统根目录/,Babel查找依赖时默认从当前工作目录开始扫描,自然找不到你项目目录下的node_modules依赖。你手动执行命令时是在项目目录下操作,工作目录符合要求所以能正常启动。
修复方案
任选以下一种修改你的crontab配置即可:
方案1:执行forever前先切换到项目目录
将cd操作拼接在forever命令前,确保执行时工作目录正确:
SHELL=/bin/bash # 把~替换为绝对路径,避免crontab对相对路径解析异常 BASH_ENV=/home/USERNAME/.bashrc @reboot cd /home/USERNAME/my-node-app && /home/USERNAME/.nvm/versions/node/v15.0.0/bin/forever start -c /home/USERNAME/.nvm/versions/node/v15.0.0/bin/node server.js
方案2:给forever显式指定工作目录
通过forever自带的--workingDir参数指定项目根目录:
SHELL=/bin/bash BASH_ENV=/home/USERNAME/.bashrc @reboot /home/USERNAME/.nvm/versions/node/v15.0.0/bin/forever start --workingDir /home/USERNAME/my-node-app -c /home/USERNAME/.nvm/versions/node/v15.0.0/bin/node /home/USERNAME/my-node-app/server.js
可选优化
如果后续还需要排查启动问题,可以在crontab命令末尾追加日志输出,方便定位问题:
@reboot [你的完整命令] >> /var/log/my-node-app-start.log 2>&1
内容的提问来源于stack exchange,提问作者fareed
相关产品推荐
相关产品推荐

