Plötzlich ist in einer meiner Jenkins-Umgebungen der Build fehlgeschlagen, während er auf einem lokalen Computer anscheinend einwandfrei funktioniert, da ich Python installiert habe.
Anhand der Protokolle konnte ich feststellen, dass das Problem in der internen Abhängigkeit von Node-Gyp v3.5.0 von Node-Sass v3.8.0 liegt, als ich dies über Node-Gyp untersuchte und die Voraussetzung für die Installation von Python fand .
Meine Frage ist also, welche Version von Node-Sass ich installieren kann, um dies zu umgehen, oder gibt es eine bessere Lösung, da mein Build bis heute Morgen in derselben Umgebung einwandfrei lief.
Knoten v5.10.1
FEHLERPROTOKOLL
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
Alle Gedanken werden sehr geschätzt, danke.
Das ist mir kürzlich unter Windows passiert. Ich behebe das Problem, indem ich die folgenden Schritte mit einer PowerShell mit Administratorrechten befolge:
node_modules
Ordner löschennpm install --global windows-build-tools
npm install
quelle
npm install --global windows-build-tools
Installiert Python 2.7 und installiert es global (sodass Sie es nicht pro Projekt neu installieren müssen). Es behebt das Problem "SASS kann nicht installiert werden". HINWEIS: Unter Windows müssen Sie Ihre npm-Eingabeaufforderung als "Administrator" ausführen.package-lock.json
, damit es funktioniert.Ich musste:
Delete node_modules Uninstall/reinstall node npm install node-sass@4.12.0
funktionierte gut, nachdem es auf die richtige Sass-Version gezwungen wurde, entsprechend der Version, die angeblich mit dem richtigen Knoten funktioniert.
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
Es gab viele andere Fehler, die anscheinend durch die falsch definierte Sass-Version verursacht wurden.
quelle
Mein Computer ist Windows 10 , ich hatte ähnliche Probleme beim Versuch, SASS mit dem
node-sass
Paket zu kompilieren . Meine Knotenversion ist v10.16.3 und die npm-Version ist 6.9.0So habe ich das Problem gelöst:
package-lock.json
Datei undnode_modules/
Ordner löschen .npm i -g node-sass
.npm install
npm run build:css
Und es funktioniert!!
quelle
Das ist 2 Jahre alt, aber keiner von ihnen hat mir geholfen.
Ich habe mein NodeJS v12.8.1 (Current) deinstalliert und ein brandneues v10.16.3 (LTS) installiert und es hat
ng build --prod
funktioniert.quelle
Meine Antwort gilt möglicherweise nicht für alle. Knotenversion:
v10.16.0
NPM:6.9.0
Ich hatte große Probleme mit der Verwendung von Node-Sass und Node-Sass-Middleware . Sie sind interessante Pakete, weil sie weit verbreitet sind (Millionen von Downloads pro Woche), aber ihre Githubs weisen eine begrenzte Abhängigkeit und Abdeckung auf. Ich habe eine ältere Plattform aktualisiert, an der ich gearbeitet habe.
Am Ende musste ich Folgendes tun:
1) Manuell
Delete node_modules
2) Manuell
Delete package-lock.json
3)
sudo npm install node-sass --unsafe-perm=true --allow-root
4)
sudo npm install node-sass-middleware --unsafe-perm=true --allow-root
Ich hatte die folgende Hilfe, danke!
Vorgefertigte Binärdateien für [email protected] und [email protected] nicht gefunden
Fehler: EACCES: Berechtigung verweigert, wenn versucht wird, ESLint mit npm zu installieren
quelle
Das gleiche Problem hatte Stunden verloren, als ich versuchte, eine andere Python-Version auf meinem PC zu installieren. Aktualisieren Sie den Knoten einfach auf die neueste Version v8.11.2 und npm 5.6.0. Nach der Installation von [email protected] ist alles in Ordnung.
quelle
Nachdem ich mir alle Antworten angesehen habe, stelle ich fest, dass diese Lösung sehr hilfreich sein kann. Es wird erklärt, wie Sie "npm" konfigurieren, um Ihre installierte Python-Version zu finden, während Sie node-sass installieren. Denken Sie daran, für node-sass ist node-gyp (ein npm-Build-Tool) erforderlich, das nach Ihrem Python-Pfad sucht. Oder installieren Sie einfach Python und folgen Sie der angegebenen Lösung (im Link). Vielen Dank.
quelle
Die Fehlermeldung bedeutet, dass Ihre ausführbare oder binäre Python-Datei nicht gefunden werden kann.
In vielen Fällen wird es unter c: \ python27 installiert. Wenn es noch nicht installiert ist, können Sie es mit installieren
npm install --global windows-build-tools
, was nur funktioniert, wenn es noch nicht installiert wurde.Das Hinzufügen zu den Umgebungsvariablen funktioniert nicht immer. Eine bessere Alternative ist, es einfach in der npm-Konfiguration einzustellen.
npm config set python c:\python27\python.exe
quelle
Node-Gyp benötigt alten Python 2 - Link
Wenn Sie es nicht installiert haben, überprüfen Sie andere Antworten zur Installation von Windows-Build-Tools .
Wenn Sie wie ich sind und sowohl alte als auch neue Python-Versionen installiert haben , besteht die Möglichkeit, dass Node-Gyp versucht, Python 3 zu verwenden. Dies führt zu dem folgenden
SyntaxError: invalid syntax
Fehler.Ich habe einen Artikel über die Installation von zwei Python-Versionen gefunden. Und sie empfehlen, Python 2 umzubenennen. * Executable to
python2.exe
- link .Es sieht also so aus, als würde Node-Gyp erwarten, dass die alte ausführbare Python 2-Datei umbenannt wird. Daher die Fehlermeldung:
... gyp verb check python checking for Python executable "python2" in the PATH gyp verb `which` failed Error: not found: python2 ...
Nachdem ich es umbenannt hatte
C:\Python27\python.exe
,C:\Python27\python2.exe
funktionierte es ohne Fehler.Natürlich müssen beide
C:\Python27\
undC:\Python39\
in der PATH-Variablen sein. Und es ist nicht nötig, die alte Python-Version in der npm-Konfiguration festzulegen. Ihr Standard-Python wird immer noch der neue sein.quelle
Ich habe das gleiche Problem mit Node 12.19.0 und Garn 1.22.5 unter Windows 10 gefunden. Ich habe das Problem behoben, indem ich das neueste stabile 64-Bit-Python installiert habe und den Pfad zu Umgebungsvariablen während der Python-Installation hinzugefügt habe. Nach der Python-Installation habe ich meinen Computer für env vars neu gestartet.
quelle
Hey, ich habe diesen Fehler behoben, indem ich die Schritte befolgt habe
c:\python27
Umgebungsvariablen hinzugefügtquelle