【问题标题】:return process.dlopen(module, path._makeLong(filename));return process.dlopen(module, path._makeLong(filename));
【发布时间】:2016-06-04 17:47:27
【问题描述】:

从 OpenCV 节点运行示例时出现此错误

return process.dlopen(module, path._makeLong(filename)); ^ 错误:/home/sunny/face/build/opencv/v5.0.0/Release/node-v46-linux-x64/opencv.node:未定义符号:_ZNK2cv9Algorithm5writeERNS_11FileStorageE 在错误(本机) 在 Object.Module._extensions..node (module.js:460:18) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:313:12) 在 Module.require (module.js:366:17) 在需要 (module.js:385:17) 在对象。 (/home/sunny/face/lib/bindings.js:4:15) 在 Module._compile (module.js:435:26) 在 Object.Module._extensions..js (module.js:442:10) 在 Module.load (module.js:356:32)

【问题讨论】:

    标签: node.js opencv


    【解决方案1】:

    尝试通过

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

    我在使用 Gulp 和 node-sass 时遇到了与 process.dlopen 有关的错误。清除已安装的模块为我解决了这个问题。

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

    【讨论】:

      【解决方案2】:

      使用这个命令,效果很好:

      npm rebuild bcrypt --build-from-source
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我已经安装了 OpenCV v.2.4.11
        【解决方案4】:

        我遇到了同样的问题,结果发现 docker 正在运行 linux,bcrypt 是在 macOS 上创建的,如果您不在 docker 中运行 npm install,则会出现某种兼容性问题。

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

        【讨论】:

        • 我不明白我们需要将 node_modules 添加到 .dockerignore 中。
        【解决方案5】:

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

        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

        【讨论】:

        • 我有相同的设置,但仍然有这个问题
        【解决方案6】:

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

        $ rm -rf node_modules/
        $ npm update
        

        唯一对我有帮助的是

        yarn add node-sass
        

        我的节点模块终于安装成功了。

        【讨论】:

          猜你喜欢
          • 2018-03-06
          • 2020-07-03
          • 2022-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-16
          • 1970-01-01
          相关资源
          最近更新 更多