Невозможно использовать библиотеку в NW.js (и, следовательно, в Electron) - была скомпилирована для другой версии Node.js с использованием

Моя проблема в том, что я хочу импортировать эту библиотеку в настольное приложение на основе NW.js (шаблон здесь ).

      import Cap from 'cap-rbfork' //set on a vue.js view

Когда я запускаю приложение, оно не загружает страницу, и я получаю эту ошибку в оконной консоли:

        VM245:11 Uncaught Error: The module '/home/user/app/node_modules/cap-rbfork/build/Release/cap.node'
    was compiled against a different Node.js version using
    NODE_MODULE_VERSION 83. This version of Node.js requires
    NODE_MODULE_VERSION 72. Please try re-compiling or re-installing
    the module (for instance, using `npm rebuild` or `npm install`). Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (:9080/internal/modules/cjs/loader.js:955)
    at Module.load (:9080/internal/modules/cjs/loader.js:756)
    at Function.Module._load (:9080/internal/modules/cjs/loader.js:669)
    at Module.require (:9080/internal/modules/cjs/loader.js:796)
    at require (:9080/internal/modules/cjs/helpers.js:68)
    at Object.<anonymous> (:9080/home/user/app/node_modules/cap-rbfork/lib/Cap.js:3)
    at Module._compile (:9080/internal/modules/cjs/loader.js:893)
    at Object.Module._extensions..js (:9080/internal/modules/cjs/loader.js:910)
    at Module.load (:9080/internal/modules/cjs/loader.js:756)
    at Function.Module._load (:9080/internal/modules/cjs/loader.js:669)

Уже неделю пытаюсь решить. Эти методы, описанные здесь , не работают (удаление папки node_modules, команда перестройки и т. Д.). Кстати, библиотека требует, чтобы вы установили python2.7 в качестве переменной среды перед ее установкой через npm.

Я действительно не понимаю: хотя я получаю эту ошибку, если использую эту библиотеку в настольном приложении, созданном с помощью NW / Electron / Tauri, она отлично работает с простым файлом NodeJs.

1 ответ

  1. Полностью удалите глобально установленную версию Node.
  2. Установите диспетчер версий узла:
  3. Проверьте версию Node, встроенную в NW.js
  4. Используйте ваш nvm инструмент выбора для установки и переключения на соответствующую версию Node
  5. Удалить package-lock.json а также node_modules папка
  6. Делать npm install это загрузит / создаст файлы, специфичные для ваших глобальных версий Node, которые должны соответствовать версии, встроенной в NW.js

С учетом всего сказанного, настройка Vue-CLI Webpack / Babel предназначена для импорта / связывания / встряхивания кода BROWSER, а не кода NODE. Так поступаем import x from 'y' не будет работать, если он включает собственный код, привязки узлов, исполняемые файлы или код, специфичный для узла.

NW.js использует require вместо того import для обработки импорта модулей узла.

Вам также может потребоваться изменить версию NW.js, если у вас возникли проблемы с Node-GYP / NW-GYP:

Другие вопросы по тегам