Вот снимок в темноте. Я не уверен, что это решит проблему, но здесь идет:
GYP и промахи соответствия бинарники
Phantom и многие другие модули узлов используют двоичные файлы, созданные для конкретной операционной системы, что он будет запущен. Иногда в файлах журнала npm вы увидите ссылки на node-gyp. Node-gyp просто помогает создавать собственные надстройки в узловых модулях. Когда создаются двоичные файлы, они обычно строятся, в частности, из трех основных параметров: операционной системы, архитектуры процессора и версии узла, который выполняет установку.
Я думаю, вам нужно перестроить phantomjs на версию узла, который использует Electron. В большинстве случаев версия узла, установленная на вашем компьютере, и версия узла, работающая в Electron, не совпадают. Electron делает все возможное, чтобы идти в ногу с ним, но всегда есть небольшое отставание из-за объема работы и тестирования, необходимых для поддержания актуальности.
При установке фантома при запуске npm install phantom
предполагается, что ему потребуется установить или создать двоичные файлы для версии узла , используемой вашей машиной. Затем, когда ваше приложение Electron пытается запустить фантом, он пытается вызывать двоичный код версии Electron's. Когда этого не происходит, дочерний процесс немедленно выходит с ошибкой.
Как исправить
К счастью, есть и другие люди, которые там придумали, как решить эту проблему и создали отличный инструмент, чтобы помочь сформировать правильные двоичные файлы.
Введите electron-rebuild
:
https://github.com/electron/electron-rebuild
Электронно-восстановления можно запустить в командной строке, и он будет восстановить все ваши родные модули для версии Electron ваш проект использует.
Для установки:
npm install electron-prebuilt
Чтобы использовать (в Windows):
.\node_modules\.bin\electron-rebuild.cmd
Это должно быть достаточно, чтобы поставить правильные двоичные файлы в нужном месте.
Другие мысли
Иногда вы можете использовать пакет, который использует зависимость с именем узла предварительного лавочка. Например. sqlite3. Существует известная проблема, с которой я столкнулся, когда пытаюсь перестроить мои пакеты для Electron. В принципе, чтобы избежать этой проблемы (если вы столкнулись с ней) просто добавьте --pre-gyp-fix
к вышеуказанной команде.
Tangent для тех, кто столкнулся с вопросом заранее лавочка починки
Еще одна вещь, на пре-лавочка исправить: Если один или несколько зависимостей зависит от одного из модулей, которые нуждаются в pre-gyp-fix, тогда они будут искать двоичные файлы не в том месте, даже если они работают в Electron. Все предварительно Gyp двоичные файлы сохраняются в папке, подобной этой:
.\node_modules\sqlite3\lib\binding
В моем текущем проекте у меня есть три папки, по одному для электронно-v1.4, и два для узла-V46 и узел-V50. (hack alert) Чтобы работать sqlite3 с другими моими зависимостями, я копирую двоичный файл, найденный в папке Electron-v1.4, и помещаю его в папки с узлами-v *. Таким образом, при работе в Electron все зависимости запускают правильные двоичные файлы, даже если они ищут их не в том месте. (конца хак оповещение)
Заключение
Там нет никакого способа, я могу быть уверен, что это не имеет ничего общего с вопросом вы видите. Но стоит подумать, не исправляет ли ваша проблема. Если нет, то, по крайней мере, я надеюсь, что смогу помочь кому-то другому испытать те же проблемы, с которыми я столкнулся.
https://en.wikipedia.org/wiki/File_URI_scheme –
@Igor есть что-то особенное, вы видите неправильное, или вы предполагаете, что фантомный модуль имеет неправильный URI? –
Вероятно, проблема безопасности Windows не позволяет запускать неподписанную программу. – Vaviloff