我需要运行一个 sh 脚本 send.sh
如下图内容:
node send.js -q 8435924032 >> send.log
如果我使用 crontab 作为
*/2 * * * * /home/app/send.sh
运行它什么都没有输出。
还有一封邮件显示了 cron 进程抛出的错误:
ReferenceError: Promise is not defined
at requestURL (/home/app/getData.js:34:16)
at Object.getData (/home/app/getData.js:15:18)
at /home/app/send.js:173:41
...
但是,当我直接运行
sh send.sh
时,它给了我正确的输出并且没有错误有人可以帮忙吗?我想每两分钟运行一次程序。
我试过 PM2 但这样的 cron 功能不起作用。
最佳答案
您是否检查了用户根 node.js 版本?
Crontab 默认以 root 身份运行 shell 脚本,这意味着它使用 root 用户 node.js 而不是您用于运行脚本的 Node 版本。
旧版本的 node.js 不支持 Promise。
如果您有 root 权限,您可以通过以下方式检查 root 用户 node.js 版本,
$sudo su
$node -v
或者,在您的 node.js 脚本中,
console.log(process.versions); //which contains running node version
关于node.js - cron运行Nodejs不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40761197/