Cron任务启动Node.js应用报错,需切换目录才能运行的解决求助
解决Cron启动Node.js应用找不到文件的问题
这个问题我遇过好几次啦!核心原因就是Cron任务的默认工作目录不是你的项目目录,Node.js运行时会从当前工作目录找warnings.json(相对路径),自然就找不到了。给你两个简单的解决办法:
方法一:直接在Cron命令里切换目录
不用写脚本,直接修改Cron任务的命令,先切换到项目目录再启动应用:
0 * * * * cd /home/pi/Desktop/DiscordBots/panda-bot && node index.js
解释下:
0 * * * *表示每小时整点执行一次(Cron的时间格式是分、时、日、月、周)cd 项目目录 && node index.js确保Node在项目目录下运行,这样就能找到warnings.json了
如果需要记录日志方便排查问题,可以加上输出重定向:
0 * * * * cd /home/pi/Desktop/DiscordBots/panda-bot && node index.js >> /home/pi/Desktop/DiscordBots/panda-bot/bot.log 2>&1
这样会把应用的输出和错误信息都写到bot.log文件里。
方法二:创建Shell脚本(更灵活)
如果以后需要加更多启动前的操作,写脚本会更方便:
- 新建一个启动脚本,比如
start-panda-bot.sh,内容如下:
#!/bin/bash # 切换到项目目录 cd /home/pi/Desktop/DiscordBots/panda-bot # 启动Node应用 node index.js
- 给脚本添加执行权限:
chmod +x /home/pi/Desktop/DiscordBots/panda-bot/start-panda-bot.sh
- 修改Cron任务,调用这个脚本:
0 * * * * /home/pi/Desktop/DiscordBots/panda-bot/start-panda-bot.sh
同样,也可以在脚本里加日志输出,或者在Cron命令里重定向输出。
内容的提问来源于stack exchange,提问作者Daniell
相关产品推荐
相关产品推荐

