簡體   English   中英

我可以在 heroku 中運行 nodejs 子進程(命令行)嗎?

[英]Can I run nodejs child-process (command line) in heroku?

我創建了一個 app.js 文件,它試圖運行節點跨度子進程。 使用該子進程,我嘗試運行 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

誰能建議我錯過了什么?

所以,我自己想出來了。 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM