web-dev-qa-db-fra.com

Node.js: Python introuvable en raison de node-sass et node-gyp

Soudain, dans l’un de mes environnements jenkins, la construction a commencé à échouer, alors que sur une machine locale, elle semble bien fonctionner car j’ai python installé,

À partir des journaux, j’ai pu détecter que le problème était lié à la dépendance interne, c’est-à-dire node-gyp v3.5.0 de node-sass v3.8.0 lorsque j’ai effectué une recherche en visitant this à propos de node-gyp et que j'ai trouvé la condition préalable que Python doit être installé.

Donc, ma question est la suivante: quelle version de node-sass puis-je installer pour contourner ce problème ou existe-t-il une meilleure solution, car ma version fonctionnait bien jusqu'à ce matin dans le même environnement.

Node v5.10.1

ERROR LOG

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

Toutes les pensées sont très appréciées, merci.

24
Vipul Panth

Node-sass essaie de télécharger le binaire pour votre plate-forme lors de l'installation. Node 5 est pris en charge par 3.8 https://github.com/sass/node-sass/releases/tag/v3.8. Si votre Jenkins ne peut pas télécharger le binaire préconfiguré, vous devez suivre les exigences de la plate-forme sur Node-gyp README (Python2, VS ou MSBuild, ...). Si possible, je vous suggère de mettre à jour votre Node à au moins 6 puisque 5 n'est plus pris en charge par Node. Si vous souhaitez effectuer une mise à niveau vers 8, vous devez mettre à jour node-sass vers 4.5.3.

9
nschonni

donc cela m'est arrivé sur windows récemment. Je résous le problème en suivant les étapes suivantes en utilisant un PowerShell avec des privilèges d'administrateur:

  1. effacer node_modulesdossier
  2. fonctionnement npm install --global windows-build-tools
  3. réinstaller des modules de noeuds ou node-sass avec npm install
43
Shezan Kazi

C'est âgé de 2 ans, mais aucun d'eux ne m'a aidé.

J'ai désinstallé mon NodeJS v12.8.1 (actuel) et installé un tout nouveau v10.16.3 (LTS) et mon ng build --prod travaillé.

3
Bruno Miquelin

avait le même problème perdu des heures à essayer d'installer une version différente de python sur mon PC. Il suffit de mettre à niveau le noeud vers la dernière version v8.11.2 et npm 5.6.0, puis après installer [email protected] .3 et tout ira bien.

2
davyCode

J'ai dû:

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

a bien fonctionné après l’avoir forcé vers la bonne version de sass, selon la version censée fonctionner avec le bon noeud.

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

Il y avait beaucoup d'autres erreurs qui semblaient être causées par la mauvaise version de sass définie.

2
Stephen Himes

Après avoir examiné toutes les réponses, je remarque que cette solution pourrait être très utile. Il explique comment configurer "npm" pour trouver votre version installée python lors de l’installation de node-sass. Rappelez-vous, node-sass nécessite node-gyp (une version npm outil) qui recherche votre chemin python. Ou installez simplement python et suivez la même solution que celle donnée dans le lien). Merci.

0
Mwami.Tovi