2014-09-06 15 views
28

Jestem nowym użytkownikiem nodejs i właśnie zainstalowałem moduł altanowy na całym świecie. Od tamtej pory, komenda lista npm daje następujące dane wyjściowe, które szukałem w internecie, ale nie mógł znaleźć żadnej pomocy:Co oznacza "nieważny" w przypadku korzystania z listy npm?

**npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/chalk 
npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex 
npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/configstore 
npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/object-assign 
npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url 
npm ERR! invalid: [email protected] /usr/local/lib/node_modules/bower/node_modules/update-notifier/node_modules/string-length/node_modules/strip-ansi 
npm ERR! not ok code 0** 

Reszta wyjście jest normalne i zawiera listę zainstalowanych modułów. Czy ktoś może wyjaśnić, co się dzieje?

+0

Sprawdź tę odpowiedź. Miałem ten sam problem i to naprawiłem. http://stackoverflow.com/questions/25238544/npm-err-invalid-strip-ansi0-2-2 – pasine

Odpowiedz

11

Oznacza to, że coś zależy od, na przykład, "async":"0.9.3", ale kiedy robią require("async"), npm myśli, że dostaną inną wersję. Sprawdź także, czy dostępne są zależności i ich wersje wymienione w pliku package.json.

Jeśli wszystko jest w porządku to można rozwiązać ten problem z

npm update 

następnie

npm install. 
+1

Czy mógłbyś rozwinąć swoją odpowiedź? Jeśli 'pakiet.json' somelib' zależy od '' async ":" 0.9.3 "', z pewnością npm powinien zainstalować asynchroniczny 0.9.3 w somelib/node_modules i 'require (" async ")' powinien załadować asynchronicznie 0.9.3. Czy możesz podać nam okoliczności, w których załadowałbyś inną wersję asynchroniczną? Nie wątpiąc w przydatność twojej odpowiedzi, po prostu nie w pełni rozumiem. – mikemaccana

+2

@mikemaccana 'somelib's' pakiet.json' zawsze zainstaluje wersję modułu wspomnianą w 'somelib'' package.json' lokalnie do tego modułu. Nie spowoduje to żadnych problemów w module. Ale w twojej konfiguracji projektu, jeśli zrobiłeś coś takiego jak 'npm install async @ 0.6', i w twoim' pakiet.json' określiłeś zależność jako 'async: 0.9.x', to wtedy powstaje ta sprawa. – Ravi

+1

Ah. Moja instalacja projektu normalnie po prostu uruchomi 'npm install' (bez żadnych opcji) i zainstaluje cokolwiek w' pakiecie.json', ponieważ wszystkie zależności powinny znajdować się w 'package.json' (lub pliku shrinkwrap). – mikemaccana

0

byłem coraz powiązany ale inny błąd (ale skończyło się tutaj, więc jestem odpowiadając tutaj) gdzie po uruchomieniu npm update otrzymam. (Nie ma takiego problemu z npm install, FWIW)

[email protected] /home/malcolm/myapp 
├── [email protected] invalid 

Pakiet beeminder jest jednym ja utrzymać, więc w moim głównym aplikacji miałem ustawić jego semver do latest. Wydawało się, że działa to dobrze wcześniej, ale domyślam się, że nowsza wersja npm go nie lubi.

Doszedłem do wniosku, że rozsądnie było użyć tylko ^1.4.3, ponieważ jeśli wprowadzam nowe zmiany, prawdopodobnie zmienię swój kod. Ale jeśli z jakiegoś dziwnego powodu potrzebujesz najnowszej najnowszej paczki (włączając w to zrywanie zmian!), Możesz użyć prefiksu >= zamiast ^.

3

Otrzymałem ten błąd po zainstalowaniu nowszej wersji modułu, bez aktualizowania pliku package.json. Tak więc package.json wymagała starszej wersji, podczas gdy npm list wykrywała nowszą wersję w moim katalogu node_modules.

Uruchomienie następującego polecenia spowodowało, że usunąłem wiadomość.

npm install {required_module}@{new_version} --save

35

ja otrzymuję ten błąd, mający ten sam pakiet zainstalowany zarówno w „zależności” i „devDependencies” z różnymi wersjami.

+0

to powinna być zaakceptowana odpowiedź – Andreas