Node.js: исключение Python не найдено из-за node -sass и node -gyp

Внезапно в одной из моих сред jenkins начался сбой сборки, в то время как на локальной машине она работает нормально, так как у меня установлен python,

Из журналов я смог обнаружить, что проблема связана с внутренней зависимостью, то есть node-gyp v3.5.0 от node-sass v3.8.0, когда я исследовал эту страницу, посетив раздел о node-gyp и обнаружив, что Python должен быть установлен,

Поэтому мой вопрос заключается в том, какую версию node-sass я могу установить, чтобы обойти это, или есть лучшее решение, так как моя сборка работала до сегодняшнего утра в той же среде.

Узел v5.10.1

ЖУРНАЛ ОШИБОК

gyp verb check python checking for Python executable "python2" in the PATH
gyp verb 'which' failed Error: not found: python2
gyp verb 'which' failed     at getNotFoundError (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:13:12)
gyp verb 'which' failed     at F (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:68:19)
gyp verb 'which' failed     at E (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:80:29)
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:89:16
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\index.js:44:5
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\windows.js:29:5
gyp verb 'which' failed     at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb 'which' failed  python2 { [Error: not found: python2] code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb 'which' failed Error: not found: python
gyp verb 'which' failed     at getNotFoundError (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:13:12)
gyp verb 'which' failed     at F (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:68:19)
gyp verb 'which' failed     at E (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:80:29)
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\which\which.js:89:16
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\index.js:44:5
gyp verb 'which' failed     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\isexe\windows.js:29:5
gyp verb 'which' failed     at FSReqWrap.oncomplete (fs.js:82:15)
gyp verb 'which' failed  python { [Error: not found: python] code: 'ENOENT' }
gyp verb could not find "python". checking python launcher 
gyp verb could not find "python". guessing location 
gyp verb ensuring that file exists: C:\Python27\python.exe
gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at Object.failNoPython (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-gyp\lib\configure.js:454:19)
gyp ERR! stack     at Object.<anonymous> (C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-gyp\lib\configure.js:480:16)
gyp ERR! stack     at C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:82:15)
gyp ERR! System Windows_NT 6.3.9600
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files (x86)\\Jenkins\\jobs\\NdbSite-hot-fix-Manual-PreBuild\\workspace\\src\\NdbSite.UI\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\Program Files (x86)\Jenkins\jobs\NdbSite-hot-fix-Manual-PreBuild\workspace\src\NdbSite.UI\node_modules\node-sass
gyp ERR! node -v v5.10.1
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok 
Build failed

Любые мысли очень ценятся, спасибо.

Ответ 1

При установке Node-sass пытается загрузить бинарный файл для вашей платформы. Узел 5 поддерживается 3.8 https://github.com/sass/node-sass/releases/tag/v3.8.0 Если ваш Jenkins не может загрузить предварительно собранный двоичный файл, то вам необходимо следовать требованиям платформы для Node-gyp README (Python2, VS или MSBuild,...) Если возможно, я бы предложил обновить ваш Node как минимум до 6, поскольку 5 больше не поддерживается Node. Если вы хотите обновить до 8, вам нужно обновить node-sass до 4.5.3

Ответ 2

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

  1. удалить папку node_modules
  2. запуск npm install --global windows-build-tools
  3. переустановка узловых модулей или node-sass с помощью npm install

Ответ 3

Мне пришлось:

Delete node_modules
Uninstall/reinstall node
npm install [email protected]

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

NodeJS  Minimum node-sass version   Node Module
Node 12 4.12+   72
Node 11 4.10+   67
Node 10 4.9+    64
Node 8  4.5.3+  57

Было много других ошибок, которые, казалось, были вызваны неправильной версией sass.

Ответ 4

Это 2 года, но никто из них не помог мне.

Я удалил свой NodeJS v12.8.1 (Current) и установил совершенно новый v10.16.3 (LTS), и мой ng build --prod работал.

Ответ 5

была та же самая проблема, потерянная часы, пытаясь установить другую версию python на моем ПК. Просто обновите узел до последней версии v8.11.2 и npm 5.6.0, затем после установки [email protected] и все будет в порядке.

Ответ 6

Посмотрев на все ответы, я заметил, что это решение может быть очень полезным. Он объясняет, как настроить "npm" для поиска установленной версии Python при установке node-sass. Помните, для node-sass требуется node-gyp (инструмент сборки npm), который ищет ваш путь к Python. Или просто установите Python, и следуйте тому же решению, как указано (в ссылке). Благодарю.

Ответ 7

Моя машина - Windows 10, я столкнулся с похожими проблемами, пытаясь скомпилировать SASS, используя пакет node-sass. Версия моего узла v10.16.3 и версия npm 6.9.0

Способ, которым я решил проблему:

  1. Сначала удалите файл package-lock.json и папку node_modules/.
  2. Откройте Windows PowerShell от имени администратора.
  3. Запустите команду npm i -g node-sass.
  4. После этого перейдите в папку проекта и запустите npm install
  5. И наконец, запустите скрипт компиляции SASS, в моем случае это npm run build:css

И это работает!