Невозможно собрать собственные пакеты для узла - PullRequest
0 голосов
/ 03 декабря 2018

Итак, я запускаю приложение Electron, в котором есть несколько собственных модулей, один из которых представляет собой пакет better-sqlite3.Я запускаю yarn, и yarn может без проблем установить все пакеты, но когда он добирается до этапов сборки, все ломается.

Я получаю кучу разных node-gyp сообщений об ошибках, из которых 2 я смогчтобы сохранить, чтобы я мог показать здесь, здесь важная часть вывода ошибки для первой ошибки:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(67,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [C:\Users\bepop\Documents\DeveloperData\Clippy\app\node_modules\better-sqlite3\build\deps\action_before_build.vcxproj]

Полная ошибка

С точки зрения этой ошибки я пытался сделать несколько вещей, таких как установка инструментов визуальной сборки Microsoft разными способами, например, вручную перейти на их сайт и загрузить IDE, я также попытался установить инструменты сборки через NPM с помощью:

npm install --global --production windows-build-tools

Он всегда успешно устанавливает инструменты сборки, но все равно выдает ошибки, я также пытался редактировать конфигурацию npm с помощью: npm config set msvs_version 2017 по-прежнему не работает.Я также попытался перейти к установке Visual Studio и вручную проверить: «VC ++ 2017 версия 15.7 v14.14 последние инструменты v141» Также ничего.

Я помню, в какой-то момент я смог получить все, чтобысобрать нормально с Windows 10, и у меня никогда не было проблем, но больше нет.Я уже несколько месяцев пытаюсь решить эту проблему самостоятельно, и я просто продолжаю работать над проектом на моем macbook, где никогда не возникает проблем при сборке пакета better-sqlite3.

Еще 1 вещьЯ попытался полностью стереть мой компьютер со всего и начать все заново, потому что в какой-то момент я изменил так много вещей, что потерял след того, что я установил, а что нет.

Если я удаляю пакет better-sqlite3 из файла package.json, все идет гладко, и я могу нормально запустить свой проект, но мне нужен пакет better-sqlite3.Я мог бы использовать другой пакет, но я действительно не должен был этого делать, я хотел бы разобраться в причинах, по которым я не собираюсь это делать.

Редактировать:

Обновлено: я добавил инструменты сборки Microsoft v14.0.23107.0 в свою переменную pats, и теперь она выдает ошибку:

C:\Users\bepop\Documents\DeveloperData\Clippy\node_modules\integer\build\integer.vcxproj(21,3): error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Исправлена ​​проблема для себя:

  1. Удалить папку узловых модулей

Откройте PowerShell с правами администратора и запустите в следующем порядке:

npm install --global --production --vs2015 - add-python-to-path windows-build-tools

npm install --global --production - add-python-to-path windows-build-tools узел-gyp

Перейдите на ~/.npmrc и убедитесь, что это ваши настройки:

msvs_version = 2015

python = python2.7

0 голосов
/ 04 декабря 2018

Сначала удалите все версии Visual Studio, установленные из вашей системы, а также удалите записи из path и system variable.

и следуйте приведенному ниже URL-адресу https://github.com/nodejs/node-gyp#readme

Все работает нормально после удаления better-sqlite3 этой записи пакета из package.json, поскольку другие пакеты не имеют собственной зависимости.и этот better-sqlite3 является нативным модулем после загрузки, этот модуль получает сборку с помощью инструмента node-gpy, для которого в вашей системе должны быть установлены две вещи, а именно python и visual studio.

.URL шагов.

это точно будет работать.

...