Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js &引用;错误:spawn mongoexport enoint“;运行停靠节点应用程序时_Node.js_Linux_Mongodb_Docker - Fatal编程技术网

Node.js &引用;错误:spawn mongoexport enoint“;运行停靠节点应用程序时

Node.js &引用;错误:spawn mongoexport enoint“;运行停靠节点应用程序时,node.js,linux,mongodb,docker,Node.js,Linux,Mongodb,Docker,我正在对我们的一个节点应用程序进行对接。此应用程序的一个功能是,在开始时,应用程序使用mongoexport下载mongodb数据并写入文件 我使用child_进程spawn来完成这项工作 var spawn = require('child_process').spawn; var mongoExport = spawn('mongoexport', [ '--db', 'dbname', '--collection', 'collection1',

我正在对我们的一个节点应用程序进行对接。此应用程序的一个功能是,在开始时,应用程序使用mongoexport下载mongodb数据并写入文件

我使用child_进程spawn来完成这项工作

var spawn = require('child_process').spawn;
var mongoExport = spawn('mongoexport', [
                 '--db', 'dbname', '--collection', 'collection1',
                 '--fields',
                 'name,address,city,country,pincode',
                 '--type', 'csv'
             ]);
当我在命令提示符下运行“node app.js”时,应用程序启动并正常工作

但是,当我停靠此节点应用程序并尝试运行时,我得到“错误:生成mongoexport eNote”

我在一个容器中运行mongodb,在另一个容器中运行node app并与mongodb容器链接

RUN apt-get update 
RUN apt-get install -y mongodb
docker run--restart=always--name mongo rnd-v /opt/mongo\u rnd:/data/db-d mongo:3.2.7

docker run-e“MONGO_HOST=MONGO rnd”-p 8081:8081-d--名称nodeapp--链接MONGO rnd:MONGO rnd nodeappimageid

我尝试了以下方法来调试此问题

  • 我通过评论mongoexport特性检查,一切正常
  • 我想,这可能是docker容器中的child_进程的问题。因此,我尝试使用一个简单的“ls”命令
  • 没问题,效果很好

    因此,我的结论是“mongoexport”命令在nodejs docker容器中不可用

    有人知道如何做到这一点吗?还是不可能做到这一点

    这是我的docker文件供参考

    FROM node:wheezy
    
    RUN mkdir -p /usr/src/temp
    
    COPY . /usr/src/temp
    
    WORKDIR /usr/src/temp
    RUN npm install
    
    ENV PORT=8081
    ENV MONGO_HOST "localhost"
    
    EXPOSE 8081
    CMD node app.js
    

    正如我正确猜测的那样,问题在于nodeapp容器中没有安装“mongodb”

    我所要做的就是在Dockerfile中添加以下行,以便在nodeapp容器中安装mongodb

    RUN apt-get update 
    RUN apt-get install -y mongodb
    
    根据代码,我必须在mongoexport调用中指定
    --host
    --port

    var mongoExport = spawn('mongoexport', [
                     '--db', 'dbname', '--host', 'mongo-rnd', '--port', 27017, '--collection', 'collection1','--fields', 'name,address,city,country,pincode',
                     '--csv']);
    
    难道
    --type
    是多余的,而
    --csv
    就足够了吗?从中可以看出。虽然从mongoexport 3.0.0
    ——type=csv
    是正确的方法。是的。你说得对--在最新的mongo中未识别类型(我使用3.2.7进行了测试)。指定为--csv就足够了