Node.js &引用;错误:spawn mongoexport enoint“;运行停靠节点应用程序时
我正在对我们的一个节点应用程序进行对接。此应用程序的一个功能是,在开始时,应用程序使用mongoexport下载mongodb数据并写入文件 我使用child_进程spawn来完成这项工作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',
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
我尝试了以下方法来调试此问题
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就足够了