[英]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.