node.js - cron运行Nodejs不工作

标签 node.js centos promise crontab

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

相关文章:

node.js - 需要构建的非缓存 npm 模块

linux - 备份脚本 - 递归

centos - 如何在 centos 9 流上安装 python2?

node.js - 将嵌套循环查询组合到父数组结果 - pg-promise

javascript - 处理 promise 中的错误

php - Laravel 5.1 使用 Redis

node.js - 我正在将一个哈巴狗布局(父级)扩展到另一个哈巴狗布局(子级)。我从父级布局中收到错误 'unexpected token:indent'

node.js - Node js-cassandra 不会插入

python - Centos 6 : scrapy commend not found(installed successfully)

node.js - 在 node.js 中永远重复这组 Action