Ошибка сборки node-gyp для Windows x64

Вот что я сделал на своей ОС x64:

  • Установил Python (v2.7 - в частности, 2.7.6) и добавил его в системный путь (C: \ Python27)
  • Установлена ​​экспресс-версия MS VS C ++ 2010 (у меня уже была VS 2012, но без компонента C ++)
  • Установлено обновление компилятора для Windows SDK 7.1
  • Успешно выполнена настройка node-gyp (из моего каталога надстроек в nodejs \ node_modules, где находится binding.gyp)

  • запустил сборку node-gyp (от имени администратора) ** Вот что разбилось, оставив меня с:

эта ошибка:

C:\Program Files\nodejs\node_modules\msnodesql>node-gyp build
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | win32 | x64
gyp info spawn C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
Building the projects in this solution one at a time. To enable parallel build, please add the   "/m" switch.

ССЫЛКА: фатальная ошибка LNK1181: не удается открыть входной файл 'kernel32.lib' [C: \ Program Files \ nodejs \ node_modules \ msnodesql \ build \ sqlserver.vcxproj]

gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\RNelson\AppData\Roaming\npm\node_modules\node-gyp\lib\build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Users\\RNelson\\AppData\\Roaming\\npm\\node_modules\\node-      gyp\\bin\\node-gyp.js" "build"
gyp ERR! cwd C:\Program Files\nodejs\node_modules\msnodesql
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.12.2
gyp ERR! not ok

Есть идеи относительно того, что происходит? Заранее спасибо! Просто пытаюсь использовать мой драйвер MS node-sqlserver для Node.js


person Rachael    schedule 04.02.2014    source источник
comment
Вы можете вставить текст ошибки. не так ясно для чтения   -  person Pradheep    schedule 04.02.2014
comment
@Dalorzo: Я решил эту проблему !! Вскоре опубликую решение здесь. Потребовалось много работы и некоторое время, чтобы опубликовать детали. Быть в курсе.   -  person Rachael    schedule 27.02.2014
comment
и решение было ...   -  person backdesk    schedule 13.03.2014
comment
@Rachael Каково было твое решение?   -  person JuntaeKim    schedule 15.12.2015
comment
@Juntae, см. Принято.   -  person Rachael    schedule 15.12.2015


Ответы (11)


npm config set msvs_version 2013 --global работал у меня, так как я использую инструменты VS node, и вам не нужно указывать msvs_version каждый раз, когда вы выполняете установку npm.

У меня возникла проблема, из-за которой в конфигурации npm (c: \ Users \ username \ .npmrc) была запись msvs_version = 2012, которая устарела.

person devman81    schedule 19.12.2014
comment
ДЕЙСТВИТЕЛЬНО хороший улов! Я собираюсь снова попробовать установку с этим, чтобы протестировать его на своей машине. Похоже, здесь суть проблемы! Может быть, вам стоит добавить это на страницу npm, где он будет доступен большинству людей? - person Rachael; 19.12.2014
comment
снова спас меня на новой машине. - person Rachael; 12.09.2015
comment
Поздно, но не могли бы вы уточнить, почему установка версии Visual Studio на 2013 была успешной, хотя у него была установлена ​​VS 2010? Что мне не хватает? - person lux; 16.12.2015
comment
Что такое .npmrc ... ??? Я не смог найти его на своем ноутбуке ... Пожалуйста, помогите ...;) - person Maryadi Poipo; 04.08.2016

У меня была аналогичная проблема. Я обнаружил, что этот переключатель мне помог

--msvs_version=2012

так например

npm install --msvs_version=2012 <package>
person Kyle    schedule 20.03.2014
comment
Я подтверждаю, что это работает и для VS 2013. Вместо этого просто используйте --msvs_version=2013 - person Julian Krispel-Samsel; 08.12.2014
comment
Visual Studio 2015 у меня не сработал, а вот 2013 год. Это указывает мне на то, что вам нужны установленные инструменты узлов для Visual Studio. github.com/Microsoft/nodejstools - person redwards510; 06.08.2015
comment
Вопрос в том, чтобы перестроить node-gyp - как этот переключатель применим в таком случае? - person meetar; 12.09.2015

Потратив некоторое время, чтобы заставить это работать (для меня принятый ответ не сработал, для меня это всего лишь половина решения), я сделал следующее:

  1. К сожалению, у вас должна быть Visual Studio (я установил экспресс-версию 2013 для DESKTOP)

  2. Установлен python 2.7.3 (не нужно устанавливать никаких переменных окружения)

  3. Запустите cmd от имени администратора и перейдите в корень проекта (где находится файл package.json)

  4. Первый запуск: npm config set python C:\Python27\python.exe

  5. Тогда: npm install -msvs_version=2013

Уловка заключается в команде npm config set python ...path_to_python_exe..., которая будет предоставлена ​​npm для зависимости, которая, как я полагаю, требует python. Я не знаю, почему недостаточно установить python как переменную env.

person Srle    schedule 09.12.2014
comment
Я бы хотел, чтобы это изменило ситуацию :( - person Jon Biz; 16.12.2014
comment
@JonBiz, какую ошибку вы получите после выполнения вышеуказанных шагов? - person Srle; 16.12.2014
comment
Шаг 4 наконец-то мне помог! Большое спасибо! - person EvAlex; 26.12.2014
comment
@Kwoxer, я только что посмотрел и случайно установил Python 2.7.6. Я бы попробовал использовать эту версию, а не какую-нибудь несовместимую старую версию? Я действительно добавил свой каталог python в системный путь. - person Rachael; 06.04.2015
comment
Спасибо. Отлично работал с моей проблемой node-gyp. - person hzane; 15.04.2015

Если все вышеперечисленное не помогло (мой случай - Windows10 64bit)

Удалите C: \ Users \ user_name \ .node-gyp.

Удалить % AppData% / npm

Удалите % AppData% / npm-cache.

И снова установите node-gyp

Следуя инструкциям на странице node-gyp

Я выбрал вариант 1 npm install --global --production windows-build-tools

person vanduc1102    schedule 30.11.2016
comment
npm install --global --production windows-build-tools кажется самым быстрым и понятным способом (также на Win10 x64) - person thybzi; 30.08.2017
comment
У меня win10 64, и это единственный способ решить проблему. - person Zhang Buzz; 08.02.2018

Для установки node-gyp в windows или любую другую ОС

Сначала вам, возможно, придется загрузить node-gyp с помощью

$ npm install -g node-gyp-install

Затем установите

$ npm install -g node-gyp

вам может потребоваться выполнить описанную выше процедуру как root / administrator.

person Phani Kumar    schedule 26.05.2016

У меня была такая же ошибка в 2015 году при попытке установить Keystone, и я просмотрел все, что вы мне рассказывали, но само по себе это не сработало. В конце концов, мне оставалось только запустить команду

"C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\SetEnv.CMD" /Release /x64

чтобы настроить среду перед запуском команды. (Не волнуйтесь, когда текст в вашем окне становится зеленым, он работает). Так что да, я бы выполнил установку и установил переменные среды таким же образом, как и везде в Интернете, но обязательно выполните указанную выше команду перед запуском любой другой команды. Возможно, вам это не пригодится, но, надеюсь, пригодится кому-то еще. Если это все еще не работает, у меня работает MSVS версии 2010, поэтому установите эту версию и используйте флаг -msvs_version = 2010 при запуске команды npm.

person Angie    schedule 02.07.2015
comment
Энджи, если у вас все еще есть сообщение об ошибке, было бы здорово увидеть! - person Rachael; 02.07.2015
comment
@ Рэйчел, да! я свяжусь с вами как можно скорее! - person Angie; 02.07.2015
comment
хм, теперь мой ребилд node-gyp, кажется, где-то завис. Я вернусь к тебе позже @Rachael, извини :( - person Angie; 02.07.2015

Для меня решение, которое работало с VS Express, заключалось в простой установке Visual Studio 2013 Express для рабочего стола (который является единственным, который дает вам командную строку разработчика с версии 2013 года). Откройте командную строку разработчика (с повышенными привилегиями) и выполните команды установки NPM. Для этого не требовалось никаких специальных --msvs_version аргументов, это просто работало.

person James    schedule 16.07.2015

Я сам столкнулся с этой проблемой, и вот как я решил ее с помощью Visual Studio 2010:

Установите следующие пакеты

Используйте npm install из командной строки Windows SDK (вам это нужно, потому что он устанавливает дополнительные переменные среды).

Источник: инструкции node-gyp для VS2010

person DieterDP    schedule 24.08.2015

Для меня (Windows 7 64bit),

Я боролся с этой проблемой полдня, наконец, это сработало.

В пути:

  1. На панели управления я удалил все Python, Microsoft Visual Studio, Microsoft Redistributable и кое-что, что я установил, чтобы решить эту проблему.

  2. Обновление окна и перезагрузка.

  3. Установлен Python27 и Visual Studio 2013 без настройки env-val

  4. npm install node-gyp -g

  5. У меня такая же ошибка, но после npm config set msvs_version 2013 --global она работает.
person JuntaeKim    schedule 15.12.2015

существует простой в использовании пакет глобальных узлов инструментов сборки Windows. Вы можете попробовать это.

person EvilBurrito    schedule 18.02.2019

У меня также были похожие проблемы, и вот что сработало для меня.

  • Удалены Python и Visual Studio.
  • Установлены Python 27 и Microsoft Visual Studio с настольной разработкой на C ++.
  • Установка пути Python npm config set python /path/to/executable/python
  • npm install node-gyp -g
  • node-gyp configure --msvs_version=2013
person Awan Shrestha    schedule 31.12.2020