Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Javascript Express.js找不到模块';opencv';在docker容器的内部_Javascript_Node.js_Opencv_Express_Npm - Fatal编程技术网

Javascript Express.js找不到模块';opencv';在docker容器的内部

Javascript Express.js找不到模块';opencv';在docker容器的内部,javascript,node.js,opencv,express,npm,Javascript,Node.js,Opencv,Express,Npm,我正在尝试为NODE安装OpenCV绑定,这样我就可以在express服务器上使用AI了。我正在使用彼得·布莱登图书馆- 但是,在旋转docker容器时,我不断遇到一个重复的问题,其中指出: express_1 | Error: Cannot find module 'opencv' express_1 | at Function.Module._resolveFilename (module.js:485:15) express_1 | at Function.Modul

我正在尝试为NODE安装OpenCV绑定,这样我就可以在express服务器上使用AI了。我正在使用彼得·布莱登图书馆-

但是,在旋转docker容器时,我不断遇到一个重复的问题,其中指出:

express_1  | Error: Cannot find module 'opencv'
express_1  |     at Function.Module._resolveFilename (module.js:485:15)
express_1  |     at Function.Module._load (module.js:437:25)
express_1  |     at Module.require (module.js:513:17)
express_1  |     at require (internal/module.js:11:18)
express_1  |     at Object.<anonymous> (/myapp/routes/OpenCV.js:3:10)
express_1  |     at Module._compile (module.js:569:30)
express_1  |     at Object.Module._extensions..js (module.js:580:10)
express_1  |     at Module.load (module.js:503:32)
express_1  |     at tryModuleLoad (module.js:466:12)
express_1  |     at Function.Module._load (module.js:458:3)
express_1  |     at Module.require (module.js:513:17)
express_1  |     at require (internal/module.js:11:18)
express_1  |     at Object.<anonymous> (/myapp/app.js:69:16)
express_1  |     at Module._compile (module.js:569:30)
express_1  |     at Object.Module._extensions..js (module.js:580:10)
express_1  |     at Module.load (module.js:503:32)
express_1  | npm info lifecycle backend@0.0.0~start: Failed to exec     start script
express_1  | npm ERR! code ELIFECYCLE
express_1  | npm ERR! errno 1
express_1  | npm ERR! backend@0.0.0 start: `node ./bin/www`
express_1  | npm ERR! Exit status 1
express_1  | npm ERR! 
express_1  | npm ERR! Failed at the backend@0.0.0 start script.
express_1  | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
express_1  | 
express_1  | npm ERR! A complete log of this run can be found in:
express_1  | npm ERR!     /root/.npm/_logs/2017-10-25T15_32_12_258Z-debug.log
maya_express_1 exited with code 1
这给了我一个完全不同的错误

 gyp info spawn args   '-Goutput_dir=.' ]
 /myapp/node_modules/opencv/utils/find-opencv.js:21
                 throw new Error("ERROR: failed to run: pkg-config", opencv, flag);
            ^

 Error: ERROR: failed to run: pkg-config
     at /myapp/node_modules/opencv/utils/find-opencv.js:21:23
     at ChildProcess.exithandler (child_process.js:277:5)
     at emitTwo (events.js:125:13)
     at ChildProcess.emit (events.js:213:7)
     at maybeClose (internal/child_process.js:921:16)
     at Socket.stream.socket.on (internal/child_process.js:348:11)
     at emitOne (events.js:115:13)
     at Socket.emit (events.js:210:7)
     at Pipe._handle.close [as _onclose] (net.js:549:12)
 gyp: Call to 'node utils/find-opencv.js --cflags' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
我尝试重新链接opencv并使用opencv@2也没有运气

我的Dockerfile:

# Based off: https://hub.docker.com/r/danlynn/ember-cli/
# See ./provisioning/containers for more.

FROM node:8.2.1
MAINTAINER thestartupfactory.tech <hello@thestartupfactory.tech>
ENV WORKDIR=/opt NODE_ENV=production

# express server on 3000
# ember will be compiled and served via express
EXPOSE 3000
# Use /opt for building container
WORKDIR $WORKDIR

# See WORKDIR command at end of file
CMD ["npm", "start"]

# Update the image
# Install ember dev dependencies
# Install ember-cli and express-generator
RUN \
    apt-get update -y && \
    npm install -g bower@1.8.0 &&\
    npm install -g ember-cli@2.14.2 &&\
    npm install -g express-generator@4.15.0

# Import the code
RUN \
    mkdir -p /opt/ember && \
    mkdir -p /opt/express

COPY ./frontend/ /opt/ember/
COPY ./backend/ /opt/express/

# Run npm install
# Compile ember, insert to express && delete ember source
# Cleanup caches
RUN \
    cd /opt/ember && npm install &&\
    ember build --environment production && mv dist/ ../express/ &&\
    cd .. && rm -rf ember &&\
    cd /opt/express && npm install && cd .. &&\
    apt-get clean &&\
    apt-get autoremove --purge

# Move the WORKDIR ready for entrypoint
WORKDIR $WORKDIR/express
#基于:https://hub.docker.com/r/danlynn/ember-cli/
#有关更多信息,请参阅./provisioning/containers。
从节点:8.2.1
维修人员启动工厂.tech
ENV WORKDIR=/opt NODE_ENV=生产
#3000上的快速服务器
#余烬将通过express进行编译和服务
暴露3000
#使用/选择建筑容器
WORKDIR$WORKDIR
#请参见文件末尾的WORKDIR命令
CMD[“npm”,“开始”]
#更新图像
#安装余烬开发依赖项
#安装ember cli和express generator
跑\
apt获取更新-y&&\
npm安装-gbower@1.8.0 &&\
npm安装-g余烬-cli@2.14.2 &&\
npm安装-g express-generator@4.15.0
#导入代码
跑\
mkdir-p/opt/ember&&\
mkdir-p/opt/express
复制./frontend//opt/ember/
复制./backend//opt/express/
#运行npm安装
#编译余烬,插入以表示和删除余烬源(&D)
#清理缓存
跑\
cd/opt/ember和npm安装&&\
余烬建造——环境生产和mv区/。/express/&&\
光盘&&rm-rf余烬&&\
cd/opt/express&&npm安装&&cd&&\
易于清洗&&\
apt获取自动删除--清除
#将WORKDIR移动到入口点准备就绪
WORKDIR$WORKDIR/express
任何帮助都将不胜感激!
提前感谢

看起来您甚至没有在docker映像中设置node opencv。在本地计算机上设置节点opencv与在docker映像中设置节点opencv之间存在差异。在Dockerfile中,必须包含设置opencv和节点opencv的命令。如果不确定如何在Linux环境中设置OpenCV,可以参考OpenCV travis.yml


或者你也可以看看。这是一个如何将opencv与nodejs和express结合使用的示例。但是,它使用opencv4nodejs。您还可以根据要使用的OpenCV版本,从提供的基础映像中提取一个,并在顶部安装节点OpenCV的节点环境。

您可以共享Dockerfile吗?否则很难判断出哪里出了问题。@justaudewhohacks我分享了Dockerfile。对不起!:)这就是问题所在。谢谢你的帮助!
# Based off: https://hub.docker.com/r/danlynn/ember-cli/
# See ./provisioning/containers for more.

FROM node:8.2.1
MAINTAINER thestartupfactory.tech <hello@thestartupfactory.tech>
ENV WORKDIR=/opt NODE_ENV=production

# express server on 3000
# ember will be compiled and served via express
EXPOSE 3000
# Use /opt for building container
WORKDIR $WORKDIR

# See WORKDIR command at end of file
CMD ["npm", "start"]

# Update the image
# Install ember dev dependencies
# Install ember-cli and express-generator
RUN \
    apt-get update -y && \
    npm install -g bower@1.8.0 &&\
    npm install -g ember-cli@2.14.2 &&\
    npm install -g express-generator@4.15.0

# Import the code
RUN \
    mkdir -p /opt/ember && \
    mkdir -p /opt/express

COPY ./frontend/ /opt/ember/
COPY ./backend/ /opt/express/

# Run npm install
# Compile ember, insert to express && delete ember source
# Cleanup caches
RUN \
    cd /opt/ember && npm install &&\
    ember build --environment production && mv dist/ ../express/ &&\
    cd .. && rm -rf ember &&\
    cd /opt/express && npm install && cd .. &&\
    apt-get clean &&\
    apt-get autoremove --purge

# Move the WORKDIR ready for entrypoint
WORKDIR $WORKDIR/express