To jest moje package.json
dla modułu, który dołączam do projektu nadrzędnego:
{
"version": "0.0.1",
"name": "module-name",
"dependencies": {
"express": "3.3.4",
"grunt": "0.4.1",
"grunt-contrib-compass": "0.4.0",
"grunt-contrib-copy": "0.4.1",
"grunt-contrib-cssmin": "0.4.1",
"grunt-contrib-jshint": "0.6.3",
"grunt-contrib-requirejs": "0.4.1",
"grunt-contrib-uglify": "0.2.2",
"grunt-contrib-watch": "0.5.1",
"grunt-express-server": "0.4.1",
"grunt-karma": "0.4.5",
"grunt-regex-replace": "0.2.5",
"request": "2.25.0"
},
"scripts": {
"postinstall": "grunt install"
}
}
Należy zwrócić uwagę na to, że ten moduł jest zawarty w prywatnym repozytorium i dołączam go do elementu nadrzędnego, na package.json
przykład:"module-name": "git+ssh://git@myserver:user/module-name.git"
postinstall
skrypt nie działa, ponieważgrunt
nie znaleziono pakietów lokalnych, ponieważ nie są one instalowane przez NPMOdpowiedzi:
Wygląda na to, że trafiłeś na błąd, który istnieje od dłuższego czasu i nie ma jeszcze rozwiązania. W repozytorium npm istnieje kilka otwartych problemów dotyczących tego przypadku:
W pierwszej z nich wymieniono kilka obejść, które możesz wypróbować.
Alternatywnym rozwiązaniem może być (trochę hakerskie) jawne wyszczególnienie zależności jako zależności pierwszego poziomu. Wymaga to utrzymania listy, ale praktycznie musi to być wykonywane bardzo rzadko.
źródło
Miałem bardzo podobny problem, usunięcie całego
node_modules
folderu i ponowna instalacja działało dla mnie. Nauczyłem się tej sztuczki z programu IT Crowd !źródło
npm install
.Używam komputera z systemem Windows.
źródło
jeśli odziedziczyłeś ten kod, możliwe, że zależności i wersje zostały zablokowane i masz plik ./npm-shrinkwrap.json.
jeśli twoja zależność nie jest wymieniona w tym pliku, nigdy nie zostanie zainstalowana za pomocą
npm install
polecenia.trzeba będzie ręcznie zainstalować pakiety, a następnie uruchomić
npm shrinkwrap
aktualizację pliku powłoki.źródło
package-lock.json
plik po aktualizacji do węzła 8.0.0 i npm 5.0.0. Po tym, uruchomienienpm install
zainstalowałoby tylko ten jeden pakiet, a nie wszystkie z moich zależności. Usunięciepackage-lock.json
i ponowne uruchomienienpm install
rozwiązało problem.package-lock.json
przeszkadzał.Podejrzewam, że masz do czynienia z problemem polegającym na tym, że
package.json
plik nie znajduje się w tym samym katalogu co plikGruntfile.js
. Po uruchomieniugrunt xxx
poleceń pojawia się komunikat o błędzie, taki jak:Na razie rozwiązaniem jest:
npm install
aby załadować je lokalnieIMHO, to smutne, że nie możemy załadować modułów rozpoznawania gruntów z modułu nadrzędnego npm (tj. Package.json w katalogu nadrzędnym w tym samym projekcie). Dyskusja tutaj wydaje się wskazywać, że zostało to zrobione, aby uniknąć ładowania modułów „globalnych”, ale myślę, że zamiast tego chcemy ładować moduły z „mojego projektu”.
źródło
Gruntfile.js
i oba zawierająpackage.json
na tym samym poziomie.grunt
, jest to problem znpm
nierekurencyjnym instalowaniem zależności w moim projekcie modułu podrzędnego.OP może być prawdą dla starszej wersji węzła. Jednak spotkałem się z tym samym również w przypadku węzła 4.4.1.
Bardzo dobrze może być powiązany z używaną wersją węzła. Spróbuj zaktualizować do najnowszej wersji. Niektóre zależności nie są ładowane przechodnie, jeśli są niezgodne z wersją węzła.
Znalazłem to, biegając
npm update
.Po aktualizacji do najnowszej wersji (4.4 -> 5.9); to zostało naprawione.
źródło
W moim przypadku pomogło to usunąć
node_modules
ipackage-lock.json
.Następnie po prostu zainstaluj wszystko ponownie z
npm install
.źródło
Sprawdź również, czy nazwa Twojej paczki jest poprawnie akceptowana:
ŹLE:
POPRAWNY
źródło
Być może będziesz musiał zainstalować grunt-cli, spróbuj tego przed wykonaniem instalacji npm:
To naprawia błąd, który nie kończy się dla mnie, będziesz również potrzebować prawidłowego pliku grunt.
Źródło: https://stackoverflow.com/a/16456467/241294
źródło
~ ᐅ which grunt /opt/local/bin/grunt
npm install
igrunt install
działa dobrze. Problem polega na tym, że NPM nie wydaje się instalować zależności repozytorium, jak określono wpackage.json
grunt
, gdy instalujesz moduły za pomocą NPM, zwykle dostarcza podsumowanie na końcu wszelkich zależności tego modułu, które zostały już zainstalowane; kiedy instaluję dany moduł, nie otrzymuję podsumowania żadnych zainstalowanych modułów zależności.Na wypadek, gdyby ktoś cierpiał z powodu tej kłopotliwej sytuacji i popełnił ten sam asaninowy błąd, co ja, oto co było w moim przypadku. Po godzinie uderzania głową o ścianę zdałem sobie sprawę, że mój json został nieprawidłowo zagnieżdżony, a kluczowe „zależności” znajdowały się w „repozytorium” klucza.
Nie trzeba dodawać, że nie było oczywistych błędów i nie zainstalowano żadnych modułów.
źródło
Innym sposobem obejścia tego problemu jest dodanie tego do
package.json
sekcji skryptów modułuco to zrobi, to zainstaluje wszystkie pakiety potrzebne modułowi i nie otrzymasz tego błędu.
źródło
dzieje się ze starą wersją węzła. użyj najnowszej wersji węzła w ten sposób:
$ nvm use 8.0
$ rm -rf node_modules
$ npm install
$ npm i somemodule
edytuj: również upewnij się
save
.na przykład:
npm install yourmoduleName --save
źródło
Otrzymałem ten błąd, gdy zainstalowałem czyste środowisko programistyczne Node w systemie Windows.
Aby to naprawić, wszedłem do mojego nowego katalogu projektu (z którym właśnie zbudowałem szkielet
yo angular
) i wpisałem dwa polecenia:npm install -g grunt --save-dev
Spowoduje to zainstalowanie lokalnych zależności gruntowych w projekcie. Kolejny:
npm install
Zapewni to zainstalowanie wszystkich (nowych) zależności projektu.
Tada!
źródło
Warto o tym wspomnieć, aby upewnić się, że twoje zależności powinny znajdować się w
dependencies
części twojegopackage.json
(a nie dodevDependencies
).Mój problem był w zasadzie taki sam jak OP:
repo1
) przez"module-name": "git+ssh://git@myserver:user/my-repo-name.git"
inne repozytorium (nazwijmy torepo2
),repo2
'snode_modules
, nie było jednej zależności od pakieturepo1
.repo1
polegał na wpisaniu tej zależnościdevDependencies
zamiastdependencies
repo1
„spackage.json
oddevDependencies
dodependencies
repo2
, usunąłem mojąnode_modules
ipackage-lock.json
, zrobiłemnpm install
, voilà! ... zależność była tam!źródło
Miałem ten sam problem. Ale na tym samym komputerze jeden projekt miał dobry plik package.json, w którym wszystkie moje zależności zostały pomyślnie zainstalowane. A w innym projekcie moje zależności package.json nie zostały zainstalowane bez względu na to, co robię. Po prostu skopiowałem plik package.json i wkleiłem go do innego projektu. I zadziałało! Różnica, którą znalazłem, to tylko pusty wiersz na początku pliku. Nie wiem lub na cokolwiek wpływa, może na jakiś inny problem. Ale problemem był tylko plik package.json.
źródło
Myślę, że też napotkałem ten problem i najlepszym rozwiązaniem, jakie znalazłem, było przyjrzenie się mojej konsoli i ustalenie wyrzucanego błędu. Przeczytałem więc uważnie i stwierdziłem, że problem polegał na tym, że nie podałem mojego repozytorium, opisu i prawidłowej nazwy w pliku
package.json
. Dodałem te informacje i wszystko było w porządku.źródło