Cron 运行 Nodejs 不工作

Cron run Nodejs Not working

我需要运行一个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 功能不起作用。

你检查过root用户node.js版本了吗?

Crontab 运行s shell 脚本默认为 root,这意味着它使用 root 用户 node.js 而不是您用于 运行 的节点版本脚本。

旧版本 node.js 不支持 Promise。

如果你有root权限,你可以通过

检查root用户node.js版本
$sudo su
$node -v

或者,在您的 node.js 脚本中,

console.log(process.versions); //which contains running node version

对您的 shell 文件进行一些修改:

使用文件的绝对路径

node /<path>/<to>/<file>/send.js -q 8435924032 >> send.log

或导航到您的目录

cd /<path>/<to>/<file>/;
node ./send.js -q 8435924032 >> send.log