首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么节点脚本从命令运行,但在从cronjob调度时会出现错误?

为什么节点脚本从命令运行,但在从cronjob调度时会出现错误?
EN

Stack Overflow用户
提问于 2022-10-15 10:13:53
回答 1查看 34关注 0票数 0

我在macos,并计划一个节点脚本作为一个cronjob。我正在将cron作业的日志保存到一个文件中。当脚本使用我在cronjob中的相同命令从shell手动执行时,它成功地执行,但是它会从cronjob中产生错误。

该脚本使用snoowrap请求从reddit获取顶级帖子。我想这就是错误的来源。错误是:

代码语言:javascript
复制
RangeError: Maximum call stack size exceeded
    at /Users/kiro/Documents/learns/myproj/node_modules/snoowrap/dist/objects/Listing.js:231:21
    at tryCatcher (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/promise.js:729:18)
    at _drainQueueStep (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/async.js:93:12)
    at _drainQueue (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/async.js:86:9)
    at Async._drainQueues (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/kiro/Documents/learns/myproj/node_modules/bluebird/js/release/async.js:15:14)
    at processImmediate (node:internal/timers:466:21)
node:internal/process/promises:265
            triggerUncaughtException(err, true /* fromPromise */);

我在crontab中使用的命令是

~/Documents/learns/myproj/job.sh >> ~/Documents/learns/myproj/cron.log 2>&1,job.sh有

~/.nvm/versions/node/v16.14.0/bin/node ~/Documents/learns/myproj/build/index

这是代码中产生错误的部分。

代码语言:javascript
复制
await this.redditClient
        .getSubreddit(subreddit)
        .getTop({ time: "day", limit: 400, count: 400 });

我也尝试过传递--max-stack-size 32000,但仍然给出了相同的错误。

原因是什么,我该如何解决?

EN

回答 1

Stack Overflow用户

发布于 2022-10-15 11:58:52

说出来很难不看你的代码。我最好的猜测是,在没有等待前一个函数完成的情况下,您触发了太多的函数。尝试使您的代码同步运行,甚至更好地查看Call async/await functions in parallel

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74078561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档