Ошибка установки NPM с помощью node-gyp

У нас возникли проблемы с запуском "npm install" в нашем проекте. Не удается найти определенный файл:

fatal error C1083: Cannot open include file: 'windows.h'

Судя по всему, он исходит из модуля node-gyp:

c: \ Program Files \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ src \ win_delay_lo ad_hook.c (13):

фатальная ошибка C1083: не удается открыть включаемый файл: 'windows.h': нет подходящего файла или каталога [D: \ ngs-frontend-next \ node_modules \ browser-sync \ node_module s \ socket.io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ bufferutil \ buil d \ binding.sln]

Этот узелок, кажется, является для нас нескончаемым источником боли. Сначала он жаловался, что ему нужен python, поэтому мы его установили. Потом он пожаловался, что ему нужен VCBuild, который мы установили (используя .NET 2.0 SDK), теперь у нас есть эта ошибка. Кажется, что ошибки становятся все более и более неясными, и кажется, что мы идем по неправильному пути.

Странно то, что у других людей в нашей команде нет проблем с запуском npm-install.

Полная ошибка выглядит так:

c: \ Program Files \ nodejs \ node_modules \ npm \ node_modules \ node-gyp \ src \ win_delay_lo ad_hook.c (13):

фатальная ошибка C1083: не удается открыть включаемый файл: 'windows.h': нет подходящего файла или каталога [D: \ ngs-frontend-next \ node_modules \ browser-sync \ node_module s \ socket.io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ bufferutil \ buil d \ binding.sln]

gyp ERR! ошибка сборки gyp ERR! Ошибка стека: C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe не удалось с кодом выхода: 1 стек в ChildProcess.onExit (C: \ Program Files \ nodejs \ node_modules \ npm \ node _modules \ node-gyp \ lib \ build.js: 270: 23) gyp ERR! стек в emitTwo (events.js: 87: 13) gyp ERR! стек в ChildProcess.emit (events.js: 172: 7) gyp ERR! стек в Process.ChildProcess._handle.onexit (internal / child_proces s.js: 200: 12) gyp ERR! Система Windows_NT 6.1.7601 gyp ERR! команда "C: \ Program Files \ nodejs \ node.exe" "C: \ Program Files \ nodej s \ node_modules \ npm \ node_modules \ node-gyp \ bin \ node-gyp.js" "rebuild" gyp ERR! cwd D: \ ngs-frontend-next \ node_modules \ browser-sync \ node_modules \ socket. io \ node_modules \ engine.io \ node_modules \ ws \ node_modules \ bufferutil gyp ERR! узел -v v4.2.2 gyp ERR! node-gyp -v v3.0.3 gyp ERR! not ok npm WARN optional dep failed, продолжение [email protected]

[email protected] после установки D: \ ngs-frontend-next \ node_modules \ gulp-imagemin \ nod e_modules \ imagemin \ node_modules \ imagemin-gifsicle \ node_modules \ gifsicle node lib / install.js

Внешний вид pacakge.json выглядит так:

{
  "name": "Fast-nunjucks",
  "version": "0.0.1",
  "description": "A simple boilerplate using nunjucks as a template engine",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/willianjusten/Fast-nunjucks.git"
  },
  "keywords": [
    "nunjucks",
    "node",
    "gulp",
    "stylus"
  ],
  "author": "Willian Justen de Vasconcellos",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/willianjusten/Fast-nunjucks/issues"
  },
  "homepage": "https://github.com/willianjusten/Fast-nunjucks",
  "devDependencies": {
    "autoprefixer-stylus": "^0.7.1",
    "browser-sync": "^2.8.2",
    "gulp": "^3.9.0",
    "gulp-cache": "^0.3.0",
    "gulp-concat": "^2.6.0",
    "gulp-if": "^1.2.5",
    "gulp-imagemin": "^2.3.0",
    "gulp-minify-html": "^1.0.4",
    "gulp-nunjucks-html": "^1.2.2",
    "gulp-order": "^1.1.1",
    "gulp-plumber": "^1.0.1",
    "gulp-stylus": "^2.0.6",
    "gulp-uglify": "^1.2.0",
    "gulp-util": "^3.0.6",
    "jeet": "^6.1.2",
    "kouto-swiss": "^0.11.13",
    "minimist": "^1.1.3",
    "rupture": "^0.6.1"
  },
  "dependencies": {
    "gulp-install": "^0.6.0"
  }
}

person Oliver Watkins    schedule 24.11.2015    source источник
comment
Странно то, что у других людей в нашей команде нет проблем с запуском npm-install. - убедитесь, что все используют одну и ту же версию узла.   -  person xdumaine    schedule 24.11.2015
comment
Вы решили эту проблему? У меня есть что-то вроде этого. Можете ли вы проверить эту проблему: stackoverflow.com/questions/34335043/ Может быть, у вас есть для меня полезные советы.   -  person Dmytro Medvid    schedule 26.12.2015
comment
Я несколько дней пытался решить эту проблему сборки на своем ПК с установленной Visual Studio 2010/2013/2015, но безуспешно. И затем, наконец, успешно построил его внутри чистой виртуальной машины Windows. Мне это не нравится, но сработало.   -  person Val    schedule 27.12.2016
comment
О чувак. Я не часто обновляю свои приложения, но каждый раз, когда я это делаю, при установке npm происходит сбой node-sass. Он действительно стареет. Альтернативы нет?   -  person Ken Hadden    schedule 15.07.2021


Ответы (13)


Сообщения об ошибках вызвали у меня путаницу и не помогли мне полностью устранить ошибки.

README.md для < проект href = "https://github.com/nodejs/node-gyp" rel = "noreferrer" title = "node-gyp"> node-gyp лучше справляется с перечислением инструкций по установке для Unix, Max OS X и Windows.

В системах Windows вы можете выбрать вариант 1 или вариант 2, но главное, вам необходимо установить Инструменты сборки Visual C ++.

Следующая цитата из раздела установки Windows:

  • On Windows:
    • Visual C++ Build Environment:
      • Option 1: Install Visual C++ Build Tools using the Default Install option.
      • Вариант 2. Установите Visual Studio 2015 (или измените существующую установку) и выберите Общие инструменты для Visual C ++ во время установки. Это также работает с бесплатными версиями Community и Express for Desktop.

      [Windows Vista / 7 only] requires .NET Framework 4.5.1
    • Установите Python 2.7 (v3.x.x не поддерживается) и запустите
      npm config set python python2.7
      (или см. Ниже дальнейшие инструкции по указанию правильной версии Python и пути.)
    • Запустить cmd,
      npm config set msvs_version 2015

Если описанные выше действия не помогли вам, посетите Руководство Microsoft Node.js для Windows, чтобы получить дополнительные советы.

Общие инструкции по настройке Python:

Если у вас установлено несколько версий Python, вы можете определить, какую версию Python использует node-gyp, установив переменную --python:

$ node-gyp --python /path/to/python2.7

Если node-gyp вызывается через npm и у вас установлено несколько версий Python, вы можете установить для ключа конфигурации npm 'python' соответствующее значение:

$ npm config set python /path/to/executable/python2.7

Моя система успешно настроена, следуя приведенным выше инструкциям.

Информация о системе

λ ver

Microsoft Windows [Version 6.1.7601]

λ node -v
v6.2.0
λ npm -v
3.9.2

Ссылки на соответствующие инструменты / статьи:

Visual C ++ Build Tools

Visual Studio 2015

.NET Framework 4.5. 1

Python 2.7

Рекомендации Microsoft по Node.js для Windows

person Sourav Paul    schedule 25.05.2016
comment
в окнах вы хотите сделать конфигурацию npm, установите msvs_version = 2015 --global - person mjwrazor; 09.11.2016
comment
> node-gyp --python D:\Python27\python.exe - 'node-gyp' не распознается как внутренняя или внешняя команда, работающая программа или командный файл. - person Aleksey Kontsevich; 11.12.2017
comment
npm config set python D:\Python27\python.exe тоже не помогло: stackoverflow.com/q/47759310/630169 - person Aleksey Kontsevich; 11.12.2017
comment
Этот ответ ничего не имеет отношения к вопросу о npm install, вызывающем запуск node-gyp rebuild из неправильного рабочего каталога! - person Nurbol Alpysbayev; 13.09.2019

Попробуйте снова установить с --force option:

npm install --force

Если это не сработает, попробуйте обновить npm глобально:

npm update -g npm 

и попробуйте еще раз с опцией --force.

person David Vega    schedule 24.11.2015
comment
не сработало. Но я думаю, что это как-то связано с требованиями node-gyp. На веб-сайте написано, что требуется установка Visual Studio. - person Oliver Watkins; 25.11.2015
comment
Я пробовал такой подход ... Но у меня не получилось. Выдает те же ошибки, что и раньше. Пожалуйста, проверьте эту проблему: stackoverflow.com/questions/34335043/ Может быть, у вас есть для меня полезные советы ... - person Dmytro Medvid; 26.12.2015
comment
force сделал свое дело - person Sergey Pleshakov; 01.02.2021

В последний раз я видел подобную ошибку, потому что я использовал неправильную версию npm и / или node для одной из моих зависимостей. Попробуйте обновить их и попробуйте еще раз.

Перед повторной попыткой удалите ваш node_modules каталог.

Возможно, вам потребуется выяснить, какие версии npm и node нужны вашим зависимостям. Вы можете попробовать последние версии всех ваших зависимостей, node и npm.

Проверьте, какие версии используют ваши коллеги.

Какую ОС вы используете? Это может повлиять на то, что версия CLANG может отличаться.

person Softinio    schedule 24.11.2015
comment
удалить node_modules из каталога nodejs? - person Oliver Watkins; 24.11.2015
comment
Только если вы собираетесь переустановить и глобальные пакеты. - person Softinio; 24.11.2015
comment
с помощью Windows 7. Пробовал все, что вы сказали, но все еще та же проблема. Похоже, мне нужна Visual Studio или что-то в этом роде. - person Oliver Watkins; 25.11.2015
comment
Можете добавить подробнее, как проверить все зависимости? У меня похожая проблема, и я добавил сюда некоторые подробности: stackoverflow.com/questions/34335043/ Может быть, у вас есть для меня полезные советы? - person Dmytro Medvid; 26.12.2015

  1. Для установки технических средств сборки VC ++ [только для Windows 7] требуется .NET Framework 4.5.1

  2. Установите Python 2.7 и добавьте его в свой PATH, npm config set python python2.7

  3. Запустите cmd, npm config установите msvs_version 2015 --global (это вместо npm install [package name] --msvs_version = 2015 каждый раз.)

4. ТАК МНОГО npm install: tada:

person sabari    schedule 23.12.2015
comment
Привет! У меня такая же проблема с node-gyp под виндой. Я делаю именно то, что вы описали, но у меня это не работает. Для меня очень важно решить этот вопрос. Вы можете с этим помочь? Я добавил последнее обновление в свой файл журнала ошибок, и вот оно: github.com/web-jenezis/jenezis-project-bootstrap/blob/master/ Также я подробно описал свою проблему в этом выпуске: stackoverflow.com/questions/34335043/ Пожалуйста, помогите мне если ты можешь - person Dmytro Medvid; 26.12.2015

Опубликуйте мое решение здесь на случай, если у кого-то вроде меня, использующего Windows 10, по-прежнему возникает ошибка после установки многих связанных с Microsoft инструментов сборки.

Все, что вам нужно, это:

64-разрядная версия Windows 10

Python 2.7.x

Visual Studio 2013

Раньше я пробовал Visual Studio 2015, но это вообще не сработало.


  1. Прежде всего, я удаляю все связанные с Microsoft инструменты сборки. (Если вы раньше не устанавливали ничего, чтобы попытаться решить эту проблему, пропустите этот шаг.)

  2. Установите Visual Studio 2013.

  3. Настройте npm, как сказал @Sourav:

Конфигурация питона:

npm config set python /path/to/python2.7

Конфиг msvs_version:

npm config set msvs_version 2013

Запустите npm install или команду npm, которая вызывает эту ошибку. Меня устраивает!

Кстати, это решение взято здесь.

person Java Xu    schedule 01.03.2017

Привет, попробуйте установить инструменты сборки Windows (глобальный пакет npm)

Это решит вашу проблему :-) После этого вы сможете использовать команду npm install.

person EvilBurrito    schedule 18.02.2019
comment
Большое спасибо! Ты спас мне день. - person Necip Sunmaz; 28.01.2021

На основе node-gyp README обновите npm npm i npm -g и добавите более новую версию node-gyp.

Подсказка: если вы находитесь в окнах, выполните npm install --global --production windows-build-tools из PowerShell с повышенными привилегиями или CMD.exe (запустите от имени администратора).

person Javier Aviles    schedule 13.03.2020

Я пробовал все вышеперечисленные решения, но ни одно из них не помогло. Моя проблема заключалась в некоторых файлах в корневом каталоге, которые мне пришлось удалить:

package-lock.json и yarn.lock и yarn-error.log

после удаления этих файлов я запустил:

npm cache clean --force

затем я выполнил команду:

npm install

и ошибка исчезла

person Mahdieh Shavandi    schedule 16.03.2021
comment
У меня сработало 'npm cache clean --force', затем 'npm install'. Благодарность :) - person ahmed_khan_89; 25.06.2021

для этого решено (OS X):

    rm -rf  ~/.node_gyp and
    sudo npm install -g [email protected]
    cd /usr/local/lib sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.5.dylib 
    brew install gcc
    npm install
person Orr    schedule 04.01.2017

Для Windows 8 или 10:

Предполагая, что узел и npm уже установлены.

Моя версия узла и npm (на момент написания этого ответа):

узел: 8.9.4

npm: 5.6.0

  1. Сначала установите python 2.x.

  2. Убедитесь, что он доступен на пути

  3. Установите установщик Visual Studio.

  4. После установки запускаем его

  5. Откроется новый интерфейс, в котором вы можете выбрать различные параметры.
  6. Теперь выберите Инструменты сборки для Visual Studio 2017 из доступных вариантов и установите его. Вам не нужно устанавливать Visual Studio.

введите здесь описание изображения После установки все должно работать нормально.

person WitVault    schedule 19.02.2018

У меня были похожие проблемы на моем проекте. В моем случае помогло удаление package-lock.json файла и его воссоздание.

person Balasubramanian S    schedule 06.03.2021

Если вы используете node-sass, обновите его до версии 5.0.0, убедитесь, что у вас установлены инструменты сборки 2017 и Python 3, и введите эти команды перед установкой npm.

npm config set msvs_version 2017

npm config set python npm config set python C:\Users\username\AppData\Local\Programs\Python\Python39\python.exe

person Ababneh A    schedule 26.04.2021

Я просто сбежал

> yarn install

и это сработало.

person Juned Sheikh    schedule 16.06.2021