Jestem nowy w chrząknięciu i npm. Wypróbowuję więc „przykład książki kucharskiej” w witrynie „ http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uninitiated-front-end-developer#front_end_developers ” . Nie powinieneś teraz tam szukać, ale pomyślałem, że dobrze byłoby udostępnić tę witrynę. Na razie dobrze, dopóki nie dojdzie do globalnej instalacji. (Ok, jakieś błędy musiałem rozgryźć ale teraz mam działający npm).
Jeśli chodzi o próbę zainstalowania czegoś globalnie, utknąłem.
Co zrobiłem do tej pory, aby przetestować globalną instalację jakiegoś pakietu:
Utworzono katalog testów
grunttest
W tym katalogu:
npm install -g jshint
Wyjście, które widzę:
npm http GET https://registry.npmjs.org/jshint
npm http 304 https://registry.npmjs.org/jshint
...
npm http 304 https://registry.npmjs.org/string_decoder
C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
[email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])
Po prostu zdaję sobie sprawę z 304, co powinno być w porządku, ponieważ po prostu mówi, że zasób nie był modyfikowany od ostatniej instalacji (kilka minut wcześniej).
Sprawdzanie, czy jshint istnieje z:
`npm -global list`
Wynik:
[email protected] C:\Program Files\nodejs\node_modules\npm
├── [email protected]
├── [email protected]
├─...
├──
├── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected] extraneous
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └─... ├── [email protected]
├── [email protected]
└── [email protected]
**npm ERR! extraneous: [email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**
Pytania:
- Dlaczego otrzymuję błąd npm ERR! obce ...?
- Co to znaczy?
- Jak mogę rozwiązać ten problem?
Informacja:
Jestem na komputerze z systemem Windows 7 i używam cygwin jako powłoki. próba po prostu jshint ( jshint someTestfile.js
) oczywiście nie działa.
Z góry dziękuję, Meru
jshint myfile.js
powinno działać na jshintmyfile.js
.grunt-contrib-jshint
zadanie w swoimGruntfile.js
. Jedyną rzeczą, którą instalujesz globalnie, jestnpm i grunt-cli -g
to, że masz dostęp do uruchomieniagrunt
polecenia, aby uruchomić plikGruntfile.js
. Zobacz ten przewodnik, aby uzyskać więcej informacji: gruntjs.com/getting-startednpm prune
je pozbyć.npm prune --your-env
1 i 2: Oznacza to, że nie masz pliku jshint na liście w pliku package.json projektu, ale jest on zainstalowany globalnie. Nie jest to więc duży problem.
3: Aby uniknąć tego dodatkowego błędu, możesz uruchomić lub ponownie uruchomić instalację z opcją
--save
. Spowoduje to automatyczną aktualizację pliku package.json:Lub musisz ręcznie zaktualizować plik package.json z rozszerzeniem
"dependencies": {...}
źródło
--save
nie działa razem z-g
. Globalna lista pakietów nie zawiera pliku package.json.Rozwiązałem to, wykonując
npm update
w folderze pakietu nadrzędnego, który usunął niektóre obce pakiety z listy, a następnie zrobiłnpm uninstall <package>
dla pozostałych.Wydaje się, że zadziałało, ponieważ po wykonaniu tej czynności nie pojawiają się żadne błędy.
źródło
Rozwiązałem to, łącząc wszystkie odpowiedzi. Najpierw zainstalowałem pakiet globalnie.
Ponieważ npm zainstalował ten pakiet również globalnie, ale nie dodał go do mojego lokalnego pliku package.json, musiałem coś z tym zrobić.
Wybieram rozwiązanie polegające na usunięciu lokalnego, a następnie zainstalowaniu go globalnie.
W ten sposób nie mam więcej ostrzeżeń i nie psuję pliku package.json.
źródło
W moim przypadku widziałem to 'npm ERR! obca '' wiadomość w moim terminalu Cygwin, kiedy zrobiłem 'npm ls'. Myślałem, że to jakiś rodzaj globalnie zepsutej konfiguracji po wielu majsterkowaniu. Dowiaduję się tutaj następujących obserwacji:
I „rm package.json” i „npm ls” nie wyświetla już komunikatu o błędzie. Mówię więc, że zawsze sprawdzaj bieżącą lokalizację pod kątem obecności folderu `` node_modules '' i pliku package.json, ponieważ te mają pierwszeństwo w sprawdzaniu, a jeśli ich brakuje, sprawdzanie kontynuuje do folderu nadrzędnego i tak dalej, a jeśli dużo majstrowałeś przy wielu fragmentach kodu, być może rozproszyłeś się w wielu folderach node_modules i pliku package.json. Nic nie jest tu naprawdę zepsute, w przeciwieństwie do tych doświadczeń, które mamy podczas tworzenia J2EE Java / eclipse IDE lub w dniach, kiedy musimy używać regedit do zmiany ustawień w systemie Windows.
źródło
W moim przypadku było to spowodowane tym, że nazwa pakietu w jego
package.json
pliku nie była taka sama jak nazwa zależności wymieniona wpackage.json
module zależnym. Mój błąd, ponieważ jest to nowy moduł, który stworzyłem, ale trudny do wykrycia, ponieważ npm nie daje żadnej wskazówki.Stało się tak podczas używania
dependencies: { "my-module": "file:local-modules/mymodule" }
składni z literówką w nazwie „mój-moduł”.źródło
Wynika to z faktu, że Twojego pakietu nie ma w pliku package.json. Jeśli go dodasz, problem zostanie rozwiązany, spójrz na poniższy obrazek:
źródło