【问题标题】:Can I run nodejs child-process (command line) in heroku?我可以在heroku中运行nodejs子进程(命令行)吗?
【发布时间】:2021-10-21 15:29:41
【问题描述】:

我创建了一个 app.js 文件来尝试运行 node span 子进程。使用该子进程,我尝试运行 mongodump(用于创建备份的 mongodb 实用程序)。在我的本地计算机中,代码可以工作,但在我的 heroku 节点服务器中,代码失败并抛出如下错误:

2021-08-20T01:17:29.655225+00:00 app[web.1]: node:events:371
2021-08-20T01:17:29.655250+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2021-08-20T01:17:29.655250+00:00 app[web.1]:       ^
2021-08-20T01:17:29.655250+00:00 app[web.1]: 
2021-08-20T01:17:29.655251+00:00 app[web.1]: Error: spawn mongodump ENOENT
2021-08-20T01:17:29.655251+00:00 app[web.1]:     at Process.ChildProcess._handle.onexit (node:internal/child_process:282:19)
2021-08-20T01:17:29.655252+00:00 app[web.1]:     at onErrorNT (node:internal/child_process:480:16)
2021-08-20T01:17:29.655252+00:00 app[web.1]:     at processTicksAndRejections (node:internal/process/task_queues:83:21)
2021-08-20T01:17:29.655252+00:00 app[web.1]: Emitted 'error' event on ChildProcess instance at:
2021-08-20T01:17:29.655253+00:00 app[web.1]:     at Process.ChildProcess._handle.onexit (node:internal/child_process:288:12)
2021-08-20T01:17:29.655253+00:00 app[web.1]:     at onErrorNT (node:internal/child_process:480:16)
2021-08-20T01:17:29.655253+00:00 app[web.1]:     at processTicksAndRejections (node:internal/process/task_queues:83:21) {
2021-08-20T01:17:29.655253+00:00 app[web.1]:   errno: -2,
2021-08-20T01:17:29.655254+00:00 app[web.1]:   code: 'ENOENT',
2021-08-20T01:17:29.655254+00:00 app[web.1]:   syscall: 'spawn mongodump',
2021-08-20T01:17:29.655254+00:00 app[web.1]:   path: 'mongodump',
2021-08-20T01:17:29.655255+00:00 app[web.1]:   spawnargs: [
2021-08-20T01:17:29.655255+00:00 app[web.1]:     '--gzip',
2021-08-20T01:17:29.655255+00:00 app[web.1]:     '--uri',
2021-08-20T01:17:29.655255+00:00 app[web.1]:     'my_mongo_atlas_uri,
2021-08-20T01:17:29.655255+00:00 app[web.1]:     '--forceTableScan'
2021-08-20T01:17:29.655256+00:00 app[web.1]:   ]
2021-08-20T01:17:29.655256+00:00 app[web.1]: }
2021-08-20T01:17:29.732198+00:00 heroku[web.1]: Process exited with status 1

谁能建议我缺少什么?

【问题讨论】:

    标签: node.js mongodb heroku child-process mongodump


    【解决方案1】:

    所以,我自己解决了这个问题。 Heroku 本身不理解 mongodump 或 mongorestore 或任何其他 mongodb 实用程序命令。您必须将 mongodb 实用程序构建包添加到您的应用程序/服务器。您可以通过以下方式添加它们:

    heroku buildpacks:add https://github.com/uhray/heroku-buildpack-mongo.git
    heroku buildpacks:add heroku/nodejs
    

    添加后,重新部署您的服务器。现在它可以支持 mongo 实用程序命令。 参考取自:heroku buildpacks:add https://github.com/uhray/heroku-buildpack-mongo.git

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-11
      • 2012-01-13
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2015-10-29
      • 1970-01-01
      相关资源
      最近更新 更多