return process.dlopen(module,path._makeLong(filename));

时间:2016-02-23 03:25:33

标签: node.js opencv

从OpenCV Node

运行示例时出现此错误
  return process.dlopen(module, path._makeLong(filename));
                 ^

Error: /home/sunny/face/build/opencv/v5.0.0/Release/node-v46-linux-x64/opencv.node: undefined symbol: _ZNK2cv9Algorithm5writeERNS_11FileStorageE
    at Error (native)
    at Object.Module._extensions..node (module.js:460:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object. (/home/sunny/face/lib/bindings.js:4:15)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)

6 个答案:

答案 0 :(得分:24)

尝试按

刷新已安装的模块
$ rm -rf node_modules/
$ npm update

使用Gulp和node-sass时,我遇到了与process.dlopen相关的错误。清除已安装的模块可以解决我的问题。

编辑:不确定OpenCV是如何工作的(或它实际上是什么),但我认为它处理NodeJS模块的方式与常规NodeJS应用程序类似,您可以刷新模块集合。

答案 1 :(得分:3)

使用此命令,效果很好:

npm rebuild bcrypt --build-from-source

答案 2 :(得分:2)

您应该检查您的OpenCV安装,它可能要么丢失/找不到,要么它不是OpenCV节点绑定支持的版本。假设你在npm上使用opencv模块,它的自述文件表示从v2.3.1到v3.0.0的OpenCV版本(完全)支持。

答案 3 :(得分:1)

我遇到了同样的问题,事实证明 docker 正在运行 linux,而 bcrypt 是在 macOS 上制作的,如果您不在 docker 中运行 npm install,则会出现某种兼容性问题。

对我来说,添加一个 .dockerignore 文件并添加到项目的 node_module 文件夹中,然后在 Dockerfile 中运行 RUN npm install 解决了它。

答案 4 :(得分:0)

我运行了这些命令,但是没有成功

$ rm -rf node_modules/
$ npm update

唯一帮助我的是

yarn add node-sass

最后,我的节点模块已成功安装。

答案 5 :(得分:0)

我的情况是,我的node_modules上有.dockerignore

node_modules
upload
export
converage
.git
.tmp
.vscode
.github
.env

但是我仍然必须使docker-compose能够忽略node_modules文件夹。

services:
  api:
    build: .
    command: npm run dev
    volumes:
      - '.:/usr/src/app'
      - /usr/src/app/node_modules/
    ports:
      - "3000:3000"

我认为docker-compose将跳过为MacOS构建的复制node_modules到Linux容器中。

Add a volume to Docker, but exclude a sub-folder