Próba instalacji modułów z github powoduje:
Błąd ENOENT w pliku package.json.
Łatwo reprodukowane za pomocą ekspresu:
npm install https://github.com/visionmedia/express
zgłasza błąd.
npm install express
Pracuje.
Dlaczego nie mogę zainstalować z github?
Oto dane wyjściowe konsoli:
npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open '/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json'
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 Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0
github
npm
npm-install
node-modules
facet mograbi
źródło
źródło
"express": "github:visionmedia/express"
do"dependencies"
sekcjipackage.json file
, a następnie uruchomić:npm install
(jak wspomniano poniżej)Odpowiedzi:
Ponieważ
https://github.com/visionmedia/express
jest to adres URL strony internetowej, a nie moduł npm. Użyj tego smaku:lub ten smak, jeśli potrzebujesz SSH:
źródło
git+https://github.com/visionmedia/express.git
aby użyć https zamiast ssh.package.json
plik albo dostaniesz ten błąd:Error: ENOENT, open 'tmp.tgz-unpack/package.json'
.#
aby użyć określonej gałęzi z powłoki, tj .:npm install git+https://github.com/user/repo.git\#branch
Możesz także zrobić
npm install visionmedia/express
instalację z Githublub
Istnieje również obsługa instalacji bezpośrednio z Gist, Bitbucket, Gitlab i wielu innych specjalistycznych formatów. Spójrz na
npm install
dokumentację dla nich wszystkich.źródło
github.com
tylko dla .Jeśli git nie jest zainstalowany, możemy spróbować
źródło
master
. Prawdopodobnie bezpieczniej to zrobić w ten sposób./tarball/
na początkuAktualizacja z września 2016 r
Instalacja z waniliowych adresów URL https github działa teraz:
EDYCJA 1: kilku użytkowników komentuje, że nie możesz tego zrobić dla wszystkich modułów, ponieważ czytasz z systemu kontroli źródła, który może również zawierać nieprawidłowy / nieskompilowany / błędny kod. Tak więc dla jasności (chociaż powinno to być oczywiste): biorąc pod uwagę, że kod w repozytorium jest w stanie użytecznym npm , możesz teraz całkiem szczęśliwie zainstalować bezpośrednio z github
EDYCJA 2: (21-10-2019) Obecnie przeżywamy „szczyt Typescript / React / Babel”, dlatego kompilacja JavaScript stała się dość powszechna. Jeśli potrzebujesz wziąć pod uwagę kompilację, zajrzyj do
prepare
. To powiedziawszy, moduły NPM nie muszą być kompilowane i mądrze jest założyć, że kompilacja nie jest domyślna, szczególnie dla starszych modułów węzłów (i być może również dla bardzo nowych, najnowocześniejszych „ESNext” -y).źródło
dist
folder, a większość nie. Problem, z którym się powiązałem, to błąd npm -prebuild
krok ten nie jest uruchamiany podczas instalacji z GitHub. Jako przykład spróbuj zainstalować node-influx / node-influx .dist
folderów MOŻNA zainstalować z GitHub, na przykład:npm install https://github.com/fergiemcdowall/search-index-adder
działa idealnie./lib
(tak jakbyś miał folder dist). Chodzi mi o to, że samo włączenie adresu URL GitHub do repozytorium w pliku package.jons nie gwarantuje, że będzie działało podczas instalowania tego repozytorium. Na przykład moduły napisane w TypeScript muszą wepchnąć swój przetłumaczony kod do repozytorium. Zazwyczaj tego nie robią, ale raczej używają skryptu prepublish do zrzucenia kodu .JS do folderu dist, który jest przesyłany do npmjs.com.prepare
skrypt dla samych „instalacji”, w tym git deps. Co oznacza, że powyższe komentarze dotyczące kompilacji i folderów dist są nieaktualne. Każdy pakiet, który poprawnie ustawia swoją kompilację do uruchomienia,prepare
będzie działał dobrze jako git dep bez wprowadzania żadnych skompilowanych zasobów do git.Można też
npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}
użyć innej gałęzi.źródło
Obecna najwyższa odpowiedź Petera Lyonsa nie ma znaczenia w najnowszych wersjach NPM. Na przykład użycie tego samego polecenia, które było krytykowane w tej odpowiedzi, jest teraz w porządku.
Jeśli nadal występują problemy, może to być problem z dowolnym pakietem, którego używasz.
źródło
Metody są teraz dość dobrze omówione w dokumentacji instalacyjnej npm, a także w wielu innych odpowiedziach tutaj.
Jednak coś, co ostatnio się zmieniło, to npm dodanie
prepare
skryptu w celu zastąpieniaprepublish
skryptu. Rozwiązuje to długotrwały problem polegający na tym, że moduły zainstalowane przez git nie uruchomiłyprepublish
skryptu, a tym samym nie zakończyły kroków kompilacji, które występują, gdy moduł jest publikowany w rejestrze npm. Zobacz https://github.com/npm/npm/issues/3055 .Oczywiście autorzy modułu będą musieli zaktualizować pakiet package.json, aby użyć nowej
prepare
dyrektywy, aby to zaczęło działać.źródło
AKTUALIZACJA teraz możesz zrobić:
npm install git://github.com/foo/bar.git
lub w
package.json
:źródło
Ogólna postać składni to
co oznacza, że tak będzie w twoim przypadku
Z dokumentów npmjs:
źródło
Zainstaluj bezpośrednio:
Możesz też dodać
"express": "github:visionmedia/express"
do"dependencies"
sekcjipackage.json
pliku, a następnie uruchomić:źródło
Ty też możesz to zrobić
lub
Gruntownie:
źródło
Możesz bezpośrednio zainstalować repozytorium github, wydając
npm install
polecenie:npm install https://github.com/futurechallenger/npm_git_install.git --save
UWAGA: W repozytorium, które zostanie zainstalowane za pomocą polecenia npm:
źródło
dist
repozytorium nie potrzebujesz folderu ani żadnego kodu kompilacji. Musisz tylko użyćprepare
skryptu wpackage.json
.Prosty :
przykład:
źródło
próbowałem
npm install git+https://github.com/visionmedia/express
ale trwało to zbyt długo i nie byłem pewien, czy to zadziała.Dla mnie zadziałało -
yarn add git+https://github.com/visionmedia/express
.źródło
Wypróbuj to polecenie
to polecenie działało dla mnie.
źródło
~/node_modules
, a wtedy nigdy nie potrzebujesz sudo.