Проблема восстановления электронного ffi: команда не найдена - PullRequest
0 голосов
/ 19 мая 2018

Я борюсь с ошибкой:

Uncaught Exception: ошибка: сбой подпрограммы инициализации динамически подключаемой библиотеки (DLL). "

После некоторых исследований и отладки вероятная проблема заключается в том, чтомодуль узла ffi не был "перестроен" для электронной среды. Я попытался выполнить шаги в https://github.com/electron/electron/blob/master/docs/tutorial/using-native-node-modules.md, чтобы перестроить пакет, но метод 1, когда был скопирован в письмо, не сработал.

Метод 2 «Установка модуля и сборка для Electron» не работает, потому что ввод ./node_modules/.bin/electron-rebuild.cmd (я в Windows) не работает - Bash просто говорит «командаnot found ", и я не вижу других с этой проблемой. Я пытался даже запустить его из PowerShell на случай, если git bash вызывал проблемы, но у меня возникает похожая проблема, хотя я также получаю сообщение об ошибке:

At line:1 char:1
+electron-rebuild.cmd
+~~~~~~~~~~~~~~~~~~~
_CategoryInfo : ObjectNotFound: (electron-rebuild.cmd:String) [], CommandNotFoundException
+FullyQualifiedErrorID : CommandNotFoundException

Я не понимаю метод 3 (сборка вручную для Electron) и не решаюсь его использовать, а именно я не уверен, почему в команде ручной сборки нет аргумента для спецификацииесли какой пакет нужно перестроить.

Я несколько раз пытался установить Electron Rebuild в соответствии с инструкциями в https://github.com/electron/electron-rebuild (npm install --save-dev Electron-Rebuild) в папке проекта,Кажется, он установлен в правильном месте.

Почему восстановление электронов не распознается?Что нужно для правильной установки ffi?

Я также был бы признателен, если бы кто-то мог указать мне на некоторые дополнительные места, чтобы узнать, чего мне не хватает в моей концепции этой проблемы.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Хорошо, это работает для меня:

  1. Убедитесь, что Python 2.7.X установлен.
  2. Получите и установите инструменты сборки Visual Studio (например, http://landinghub.visualstudio.com/visual-cpp-build-tools)
  3. Чтобы использовать правильную версию msvs при перестройке, введите это, например, в.PowerShell: npm config set msvs_version 2015 --global
  4. В моем минимальном примере я использовал следующий package.json:

{
  "name": "stack_ffi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "rebuild": "electron-rebuild -f -w ffi"
  },
  "author": "",
  "license": "XXX",
  "devDependencies": {
    "electron": "2.0.2",
    "electron-rebuild": "1.7.3"
  },
  "dependencies": {
    "ffi": "2.2.0",
    "ref": "1.3.5"
  }
}
  • Выполнить npm run install, а затем npm run rebuild

Примечания:

  • При моей первой попытке электрон установился неправильно, поэтому я удалил папку ./node_modules/electron и снова запустил npm run install.

  • Когда я попытался использоватьsqlite3.dll в Windows: онлайн-пример (https://github.com/node-ffi/node-ffi/blob/master/example/sqlite.js) не работает. Мне пришлось удалить ведущую часть "lib" из строки библиотеки: var SQLite3 = ffi.Library('sqlite3', {...}); //was 'libsqlite3'.

  • Я протестировал его на узлах 7.4.0 и 8.0.0. Если он не работает на вашей версии узла, у меня есть теория, что v8::Object::ForceSet был отброшен на более поздних версиях.

  • Мне пришлосьубедитесь, что Windows может найти мои dll. Например, я включил dll sqlite3 x64, добавив местоположение их папки в переменную PATH env.

0 голосов
/ 24 мая 2018

Посмотрите вашу версию Python, ffi поддерживает только Python 2x, потому что node-gyp поддерживает только Python 2x.

Попробуйте удалить Python 3x и переустановить Python 2x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...