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
我需要运行一个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