从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)
答案 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容器中。