Невозможно использовать библиотеку в 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 ответ
- Полностью удалите глобально установленную версию Node.
- Установите диспетчер версий узла:
- Linux / OSX - https://github.com/nvm-sh/nvm
- Windows 8+ - https://github.com/coreybutler/nvm-windows
- Windows 7 - https://github.com/nullivex/nodist
- Проверьте версию Node, встроенную в NW.js
- https://nwjs.io/versions.json
- или
console.log(process.versions);
в NW.js
- Используйте ваш
nvm
инструмент выбора для установки и переключения на соответствующую версию Node - Удалить
package-lock.json
а такжеnode_modules
папка - Делать
npm install
это загрузит / создаст файлы, специфичные для ваших глобальных версий Node, которые должны соответствовать версии, встроенной в NW.js
С учетом всего сказанного, настройка Vue-CLI Webpack / Babel предназначена для импорта / связывания / встряхивания кода BROWSER, а не кода NODE. Так поступаем
import x from 'y'
не будет работать, если он включает собственный код, привязки узлов, исполняемые файлы или код, специфичный для узла.
NW.js использует
require
вместо того
import
для обработки импорта модулей узла.
- См .: NW-Vue-CLI-Example
Вам также может потребоваться изменить версию NW.js, если у вас возникли проблемы с Node-GYP / NW-GYP: