除非更改目录,否则无法启动节点应用程序

Can not start node app unless changing directory

我正在尝试创建一个每小时启动我的节点应用程序的 cron 作业,启动的命令是:

node /home/pi/Desktop/DiscordBots/panda-bot/index.js

但是这个returns:

fs.js:646
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open 'warnings.json'

如果我先 cd 到目录 /home/pi/Desktop/DiscordBots/panda-bot 然后 node index.js

它会启动

这意味着我必须创建一个 shell 脚本来 cds 然后启动节点,但我更喜欢在一行中启动它,这可能吗?

Cron 在您的主目录中运行您的命令。 如果你想在你的 crontab 中使用 oneliner 命令,那么你将不得不使用 &&

在你的 crontab 中 0 * * * * cd /home/pi/Desktop/DiscordBots/panda-bot && node index.js

请参考:https://unix.stackexchange.com/questions/38951/what-is-the-working-directory-when-cron-executes-a-job