Wchodzę w bazę kodu Node.js, która wymaga pobrania kilku zależności za pośrednictwem NPM, a mianowicie jQuery.
Podczas próby uruchomienia npm install jquery
pojawia się ten błąd:
Your environment has been set up for using Node.js 0.8.21 (x64) and NPM
C:\Users\Matt Cashatt>npm install jquery
npm http GET https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/htmlparser/1.7.6
npm http GET https://registry.npmjs.org/location/0.0.1
npm http GET https://registry.npmjs.org/navigator
npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/htmlparser/1.7.6
npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/location/0.0.1
npm http 304 https://registry.npmjs.org/navigator
npm http 304 https://registry.npmjs.org/jsdom
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/bindings
> contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module
s\contextify
> node-gyp rebuild
C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr
am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b
in\node-gyp.js" rebuild
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/request
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT
HON env variable.
gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod
e_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:82:11
gyp ERR! stack at Object.oncomplete (fs.js:297:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify
gyp ERR! node -v v0.8.21
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_
modules\jquery\node_modules\jsdom\node_modules\request\tests'
npm ERR! error rolling back [email protected] { [Error: ENOTEMPTY, rmdir 'C:\Users\M
att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests']
npm ERR! error rolling back errno: 53,
npm ERR! error rolling back code: 'ENOTEMPTY',
npm ERR! error rolling back path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque
ry\\node_modules\\jsdom\\node_modules\\request\\tests' }
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls contextify
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! code ELIFECYCLE
npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo
dules\jsdom\node_modules\request\tests\test-pipes.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery"
npm ERR! cwd C:\Users\Matt Cashatt
npm ERR! node -v v0.8.21
npm ERR! npm -v 1.2.11
npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_
modules\request\tests\test-pipes.js
npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd
om\node_modules\request\tests\test-pipes.js
npm ERR! fstream_type File
npm ERR! fstream_class FileWriter
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst
ream\lib\writer.js:284:26
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Users\Matt Cashatt\npm-debug.log
npm ERR! not ok code 0
C:\Users\Matt Cashatt>
Wygląda na to, że przyczyną niepowodzenia jest brakująca instalacja Pythona. Cóż, zainstalowałem Python, ustawiłem zmienną, zrestartowałem i nadal występuje błąd.
Masz jakieś wskazówki co do tego, czego mi brakuje?
PYTHON=C:\Python27\Python.exe
w oknie cmd i uruchomiłeś ponownie, ustawienie zostało utracone.cmd.exe
oknie, przed skorzystaniem znpm
polecenia, czy teżpython
czy%PYTHON%
uruchomić interpreter Pythona? Jeśli nie, nie skonfigurowałeś go poprawnie.Odpowiedzi:
Twój problem polega na tym, że tego nie zrobiłeś ustawiłeś zmiennej środowiskowej.
Błąd wyraźnie mówi:
W swoim komentarzu mówisz, że to zrobiłeś:
To miłe, ale to nie ustawia
PYTHON
zmiennej, tylko ją ustawiaPYTHONPATH
.Tymczasem samo użycie
set
polecenia wpływa tylko na bieżącącmd
sesję. Jeśli zrestartujesz się później, jak to powiedziałeś, skończysz z zupełnie nowącmd
sesją, w której nie ma ustawionej zmiennej.Istnieje kilka sposobów ustawiania zmiennych środowiskowych na stałe - najłatwiej jest w Panelu sterowania systemu w XP, który oczywiście jest inny w Vistie, inny w 7, a inny w 8, ale możesz go znaleźć w Google.
Alternatywnie po prostu zrób
set
prawo przednpm
poleceniem, bez ponownego uruchamiania między nimi.Możesz sprawdzić, czy wszystko dobrze wykonałeś, robiąc dokładnie to samo, co skrypt konfiguracyjny: Przed uruchomieniem
npm
spróbuj uruchomić%PYTHON%
. Jeśli zrobisz to dobrze, otrzymasz interpretera języka Python (z którego możesz natychmiast wyjść). Jeśli pojawi się błąd, nie zrobiłeś tego dobrze.Są z tym dwa problemy:
Po pierwsze, ustawiasz się
PYTHON
na;D:\Python
. Ten dodatkowy średnik jest odpowiedni dla rozdzielonej średnikami listy ścieżek, takich jakPATH
lubPYTHONPATH
, ale nie dla pojedynczej wartości, takiej jakPYTHON
. Podobnie, dodanie nowej wartości do istniejącej wartości jest tym, czego chcesz, gdy chcesz dodać inną ścieżkę do listy ścieżek, ale nie dla pojedynczej wartości. Więc po prostu chceszset PYTHON=D:\Python
.Po drugie,
D:\Python
nie jest ścieżką do twojego interpretera Pythona. To coś w styluD:\Python\Python.exe
lubD:\Python\bin\Python.exe
. Znajdź właściwą ścieżkę, upewnij się, że działa samodzielnie (np. WpiszD:\Python\bin\Python.exe
i upewnij się, że masz interpreter w języku Python), a następnie ustaw zmienną i użyj jej.Więc:
Lub, jeśli chcesz, aby było trwałe, zrób to samo w Panelu sterowania.
źródło
D
dysku mam Python na wypadek, gdybyś się zastanawiał. Jeszcze raz dziękuję za pomoc.set
z jakiegoś powodu musiałem uruchomić polecenie w oknie poleceń NPM, a następnie uruchomićmpm install jquery
polecenie zaraz po tym. Jeśli zrobiłem je osobno, z jakiegoś powodu to nie działało.set
polecenie wpływa tylko na bieżącecmd
okno, więc musisz to zrobić przed uruchomieniemnpm
w tym samym oknie. Jeśli chcesz ustawić zmienne środowiskowe bardziej trwale, jest to w Panelu sterowania systemu lub odpowiednik dla twojej wersji systemu Windows.Jeśli nie masz zainstalowanego Pythona i wszystkich zależności między węzłami-gyp, po prostu otwórz program Powershell lub Git Bash z uprawnieniami administratora i wykonaj:
a następnie zainstalować pakiet:
po zainstalowaniu zostaną pobrane wszystkie zależności między węzłami gyp, ale nadal potrzebujesz zmiennej środowiskowej. Sprawdź poprawność Pythona rzeczywiście znajduje się w odpowiednim folderze:
Uwaga - używa Pythona 2.7, a nie 3.x, ponieważ nie jest obsługiwany
Jeśli nie jęczy, stwórz swoją zmienną środowiskową (użytkownika):
zrestartuj cmd i sprawdź, czy zmienna istnieje
set PYTHON
którą powinna zwrócić zmiennąNa koniec ponownie zastosuj
npm install <module>
źródło
setx PYTHON $env:USERPROFILE\.windows-build-tools\python27\python.exe
Dla mnie po zainstalowaniu narzędzi do kompilacji systemu Windows z poniższym komentarzem
uruchomienie kodu poniżej
pracował.
źródło
Oto przewodnik, który rozwiązał dla mnie wiele z tych problemów.
http://www.steveworkman.com/node-js/2012/installing-jsdom-on-windows/
Pamiętam w szczególności wersję Pythona jako ważną. Upewnij się, że instalujesz 2.7.3 zamiast 3.
źródło
Jeden i / lub wiele z nich powinno pomóc:
Dodaj
C:\Python27\
do swojejPATH
zmiennej (biorąc pod uwagę, że w tym katalogu jest zainstalowany Python)Jak ustawić
PATH
zmienną env: http://www.computerhope.com/issues/ch000549.htmPo ustawieniu zmiennej uruchom ponownie konsolę i / lub Windows.
W tej samej sekcji co powyżej („Zmienne środowiskowe”) dodaj nową zmienną o nazwie
PYTHON
i wartości.C:\Python27\python.exe
Po ustawieniu zmiennej uruchom ponownie konsolę i / lub system Windows.
Otwórz wiersz poleceń systemu Windows (
cmd
) w trybie administratora .Zmień katalog na ścieżkę instalacji w języku Python: W
cd C:\Python27
przypadku niektórych instalacji ustaw łącze symboliczne:
mklink python2.7.exe python.exe
Pamiętaj, że powinieneś mieć Python 2.x, NIE 3.x , aby uruchamiać
node-gyp
instalacje oparte!Poniższy tekst mówi o Uniksie, ale wersja Windows wymaga również Python 2.x:
Ten artykuł może również pomóc: https://github.com/nodejs/node-gyp#installation
źródło
Miałem ten sam problem i żadna z tych odpowiedzi nie pomogła. W moim przypadku zmienna PYTHON została ustawiona poprawnie. Jednak Python został zainstalowany zbyt głęboko, tzn. Ma zbyt długą ścieżkę. Zrobiłem więc:
I to wszystko!
źródło
Pomogło to: https://www.npmjs.com/package/node-gyp
Wykonałem następujące kroki:
następnie:
źródło
istnieje kilka sposobów rozwiązania tego problemu: 1) uruchom wiersz polecenia jako „administrator”.
jeśli pierwsze rozwiązanie nie rozwiąże problemu, wypróbuj ten:
2) otwórz wiersz polecenia jako administrator wklej następujący wiersz kodu i naciśnij klawisz Enter:
źródło
TL; DR Utwórz kopię lub alias swojego python.exe o nazwie python2.7.exe
Mój python 2.7 został zainstalowany jako
Ten błąd zawsze występował bez względu na to, jak ustawiłem (i zweryfikowałem) zmienną env PYTHON:
Powodem tego było to, że w pliku config.js node-gyp plik wykonywalny Pythona został rozwiązany w następujący sposób:
var python = gyp.opts.python || process.env.PYTHON || 'python'
Okazało się, że gyp.opts.python miał wartość „python2.7”, co przesłania proces.env.PYTHON.
Rozwiązałem to, tworząc alias pliku wykonywalnego python.exe o nazwie, której szukał node-gyp:
D:\app\Python27>mklink python2.7.exe python.exe
Potrzebujesz uprawnień administratora do tej operacji.
źródło
Poniższe działało dla mnie z wiersza poleceń jako administrator:
Instalowanie narzędzi do kompilacji systemu Windows (może to zająć 15-20 minut):
Dodanie / aktualizacja zmiennej środowiskowej:
Instalowanie węzła gyp:
Zmiana nazwy pliku exe z Python na Python2.7.
npm install module_name --save
źródło
nie mogę nie wspomnieć o tym. Jeśli używasz Python3 i nie działa z węzłem gyp, z przykrością informuję, że węzeł gyp obecnie nie obsługuje python3.
Oto link do ciebie: https://github.com/nodejs/node-gyp/issues/1268 https://github.com/nodejs/node-gyp/issues/193
źródło
To najłatwiejszy sposób, aby NPM zrobił wszystko za Ciebie
źródło
Właściwy sposób to 1) Pobierz i zainstaluj Python 2.7.14 stąd . 2) Ustaw zmienną środowiskową dla Pythona z tutaj .
Gotowe!
Uwaga: Ustaw odpowiednio zmienną środowiskową. Odpowiedziałem tutaj na Windows.
źródło
Podjąłem to samo wyzwanie, próbując zainstalować [email protected] .
Po zapoznaniu się z bieżącą oficjalną dokumentacją i przeczytaniu powyższych odpowiedzi zauważyłem, że niekoniecznie musisz zainstalować gyp węzła lub zainstalować narzędzia do budowania systemu Windows. Oto, co mówi, tutaj o instalowaniu węzła gyp w systemie Windows . Pamiętaj, węzeł-gyp bierze udział w procesie instalacji węzła-sass. I tak naprawdę nie musisz ponownie instalować innej wersji Pythona.
To jest zbawiciel, skonfiguruj ścieżkę pythona, której powinien szukać „npm” podczas instalowania pakietów wymagających narzędzi do budowania.
Zainstalowałem tam python3.6.3 na Windows-7.
źródło
[email protected]
, kiedy przełączyłem się nawindows-10
, używając[email protected]
i[email protected]
Python36/python
powinna to być ścieżka do pliku wykonywalnego Pythona.exe
hold Shift, and Right-Click
npm config set python
Dlaczego nie pobrać tutaj instalatora Pythona ? To sprawdzi się podczas sprawdzania instalacji ścieżki
źródło
Dla mnie te kroki rozwiązały problem:
1- Uruchamianie tego cmd jako admin:
npm install --global --production windows-build-tools
2- Następnie uruchamianie
npm rebuild
po zakończeniu pierwszego kroku (zwłaszcza ukończenie instalacji Pythona 2.7, która była główną przyczyną problemu)źródło
Oto poprawne polecenie: set path =% path%; C: \ Python34 [Zamień na poprawną ścieżkę instalacji Pythona]
Miałem ten sam problem i właśnie to rozwiązałem.
Jak zauważyli inni ludzie, jest to niestabilna konfiguracja, działa ona tylko dla bieżącej sesji cmd i (oczywiście) musisz ustawić swoją ścieżkę przed uruchomieniem instalacji npm.
Mam nadzieję, że to pomoże.
źródło
Nie ma potrzeby ponownej instalacji, ten wyjątek rzuca według skryptu node-gyp, a następnie spróbuj odbudować. Wystarczy konfiguracyjna zmienna środowiskowa, jak w moim przypadku:
źródło
Jeśli próbujesz użyć tego w Cygwin, musisz postępować zgodnie z instrukcjami w tej odpowiedzi. (Problem polega na tym, jak Cygwin traktuje dowiązania symboliczne Windows).
źródło
Przykład: pg_config nie jest wykonywalny / error node-gyp
Rozwiązanie: W systemie Windows po prostu spróbuj dodać PATH Env -> C: \ Program Files \ PostgreSQL \ 12 \ bin
Pracuj dla mnie, teraz mogę używać npm i pg-obiecać na przykład lub innych zależności.
źródło
pg-promise
nie trzeba tego. Prawdopodobnie zostali porwani przez to . Po prostu skorzystaj z najnowszej wersji, a wszystko będzie dobrze, nie będziesz potrzebować żadnych dodatkowych rzeczy;)Dla mnie problemem było to, że korzystałem z najnowszej wersji węzła, a nie
LTS
wersji stabilnej i zalecanej dla większości użytkowników.Korzystanie z
LTS
wersji rozwiązało problem.Możesz pobrać stąd:
Wersja LTS
Aktualna najnowsza wersja
źródło