我需要运行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功能无效。
答案 0 :(得分:2)
您是否检查过用户root node.js版本?
Crontab默认以root身份运行shell脚本,这意味着它使用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
答案 1 :(得分:0)
对您的shell文件进行一些修改:
使用文件的绝对路径
node /<path>/<to>/<file>/send.js -q 8435924032 >> send.log
或导航到您的目录
cd /<path>/<to>/<file>/;
node ./send.js -q 8435924032 >> send.log