Return process.dlopen(module, path._makeLong (имя файла));

Я получаю эту ошибку при запуске примера из 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)

Ответ 1

Попробуйте обновить установленные модули с помощью

$ rm -rf node_modules/
$ npm update

У меня были ошибки, связанные с process.dlopen при использовании Gulp и node -sass. Очистка установленных модулей исправила проблему для меня.

EDIT: не известно, как работает OpenCV (или что это на самом деле), но я полагаю, что он обрабатывает модули NodeJS аналогично обычным приложениям NodeJS, где вы можете обновить коллекцию модулей.

Ответ 2

Вы должны проверить свою установку OpenCV, она, вероятно, либо отсутствует/не может быть найдена, либо ее версия не поддерживается связыванием OpenCV node. Предполагая, что вы используете модуль opencv в npm, его readme говорит, что версии OpenCV от версии 2.3.1 до версии v.0.0.0 (полностью) поддерживается.

Ответ 3

Я выполнил эти команды, но безуспешно

$ rm -rf node_modules/
$ npm update

Единственное, что мне помогло, было

yarn add node-sass

Наконец, мои узлы были успешно установлены.

Ответ 4

В моем случае у меня есть 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 пропустит копирование node_modules встроенного для MacOS, в контейнер Linux.

Добавьте том в Docker, но исключите подпапку

Ответ 5

Используйте эту команду, она отлично работает:

npm rebuild bcrypt --build-from-source