web-dev-qa-db-ja.com

Node.js:Python node-sassおよびnode-gypによる例外が見つかりません

突然、私のjenkins環境の1つでビルドが失敗し始めましたが、ローカルマシンではpythonがインストールされているため、正常に動作しているようです。

ログから、node-gyp v3.5.0fromである内部依存関係に問題があることを検出できました)node-sass v3.8.0node-gypについて this にアクセスして調査し、Pythonをインストールする必要があるという前提条件を見つけたとき。

したがって、私の質問は、これをバイパスするためにどのバージョンのnode-sassをインストールできるか、または同じ環境で今朝までビルドが正常に実行されていたため、より良いソリューションがありますか?.

Node 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

どんな考えでも大歓迎です、ありがとう。

24
Vipul Panth

Node-sassは、インストール時にプラットフォームのバイナリをダウンロードしようとします。 Node 5は3.8でサポートされています https://github.com/sass/node-sass/releases/tag/v3.8. Jenkinsがビルド済みのバイナリをダウンロードできない場合、その後、Node-gyp README(Python2、VSまたはMSBuild、...)のプラットフォーム要件に従う必要があります。可能であれば、Nodeを少なくとも6に更新することをお勧めします。 5はNodeでサポートされなくなったためです。 8にアップグレードする場合は、node-sassを4.5.3に更新する必要があります

9
nschonni

だから、最近Windowsでこれが起こりました。管理者権限を持つPowerShellを使用して次の手順を実行することで修正します。

  1. node_modulesfolderを削除します
  2. 実行中npm install --global windows-build-tools
  3. npm installを使用してノードモジュールまたはノードサスを再インストールする
43
Shezan Kazi

これは2歳ですが、誰も助けてくれませんでした。

NodeJS v12.8.1(現在)をアンインストールし、最新のv10.16.3(LTS)をインストールし、ng build --prodが機能しました。

3
Bruno Miquelin

pCにpythonの異なるバージョンをインストールしようとすると、同じ問題が何時間も失われました。ノードを最新バージョンv8.11.2およびnpm 5.6.0にアップグレードするだけで、node-sass @ 4.5.3をインストールした後は問題ありません。

2
davyCode

そうしなければならなかった:

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バージョンが原因と思われる他のエラーがたくさんありました。

2
Stephen Himes

すべての回答を確認した後、このソリューションが非常に役立つ可能性があることに気付きました。 node-sassのインストール中に 「npm」を​​設定してインストール済みのpythonバージョンを見つける方法 を説明します。 node-sassには、pythonパスを検索するnode-gyp(npmビルドツール)が必要です。または、Pythonをインストールして、指定された同じソリューション(リンク内)に従います。ありがとう。

0
Mwami.Tovi