• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

npm pakiety lokalne - dlaczego to nie działa?

0 głosów
349 wizyt
pytanie zadane 5 lipca 2018 w JavaScript, jQuery, AJAX przez lukasz21 Początkujący (460 p.)
Witam,

Próbuje zrozumieć jak działa idea Pakietow npm lokalnie, ale mam z tym pewien problem.

Problem:
1. Za pomoca npm instaluje lokalnie Pakiet dla folderu. Zgodnie z teoria npm TYLKO w tym folderze ten Pakiet powienien dzialac. Kiedy odinstaluje ten pakiet i uruchomie plik on nadal dziala. A bez Pakietu nie powinien dzialac.

2. Dodatkowo tworze nowy folder (np. 1 test robiłem w folderze C:\test1, a teraz tworze C:\test2) i do niego kopiuje plik JS (który może tylko z Pakietem zadziałać). W tym nowym i czystym pliku nie ma jeszcze żadnego Pakietu.
Jak teraz uruchomie plik to on działa tak jakby pakiet był zainstalowany w nim lokalnie. A przecież nie powienien.

Do tych powyższych sytuacji mam takie pytanie:
Dlaczego tak się dzieje?

Dane techniczne:
Próbuje lokalnie zainstalować Pakiet npm o nazwie:  underscore , czyli ten:
https://www.npmjs.com/package/underscore

Sprawdzałem poleceniem:
npm -g ls
, że Pakiet ten NIE występuje GLOBALNIE.

By zainstalować go lokalnie dla folderu używam polecenia:
npm  install underscore,
do deinstalacji:
 npm uninstall underscore

Mam node: v8.11.3
i npm: 6.1.0

 

Z góry dziękuje za odpowiedź.
komentarz 5 lipca 2018 przez ProgramistaStepek Nałogowiec (27,060 p.)
Pokaż kod. Daj więcej informacji. Przeładowujesz stronę?
komentarz 5 lipca 2018 przez lukasz21 Początkujący (460 p.)
edycja 6 lipca 2018 przez lukasz21
Dobra, problem już jest rozwiazany.

Zostawiam tu ten opis rozwiazania, może dla kogoś to się przyda.

Jeśli instaluje się pakiet lokalnie to w folderze instalacji powinien być utworzony plik: package.json.

1. Jeśli plik  package.json jest w folderze, gdzie instaluje pakiet lokalnie, to w tym samym folderze tworzy plik: node_modules w którym bedzie pakiet.

wtedy jest to instalacja lokalna i tak też działa pakiet.

2. Jeśli NIE ma pliku package.json w folderze, gdzie instaluje pakiet lokalnie, to podczas instalacji lokalnej [nie wiem dlaczego tak sie dzieje, ale to zauważyłem] ten pakiet jest instalowany globalnie.

W tym samym folderze NIE tworzy pliku: node_modules w którym bedzie pakiet.

Zamiast tego w GŁÓWNYM pliku 'node_modules ', tam gdzie sa pakiety globalne, utworzy instalowany pakiet, co oznacza, że bedzie on działać jako pakiet globalny.

 

To był powód dlaczego pojawił się u mnie ten problem.
komentarz 6 lipca 2018 przez Comandeer Mentor (457,660 p.)
To brzmi jak bug w npm, polecałbym zgłosić im issue.
komentarz 6 lipca 2018 przez Wiciorny Maniak (66,620 p.)
To nie bug raczej, prawdopodobnie to działa na zasadzie tego żę masz wersjonowanie w jsonie, na bazie " wersji node.js" i nie zawsze jest tak że tam masz operator "^" co oznacza - conajmniej taka wersja jak, a nie raz się spotkałem w tych nowych wydaniach nie koniecznie NPM RELEASE/  że właśnie nie czyta poszczególnych wersji
komentarz 6 lipca 2018 przez Comandeer Mentor (457,660 p.)

Ale co to ma do miejsca instalacji? W przypadku braku package.json npm powinien stworzyć po prostu katalog node_modules. Tak to zawsze działało.

komentarz 6 lipca 2018 przez Wiciorny Maniak (66,620 p.)
tak tylko samo utworzenie node_modules jest niczym skoro, żeby importować potem ten plik z zainstalowanego pakietu on kieruje się wersjalizacją (  doborem wersji " minimum z " wskazanej w pliku konfiguracji ). I tutaj robi się bug
komentarz 6 lipca 2018 przez Comandeer Mentor (457,660 p.)

Nieprawda. Przy require nie jest używany system rozwiązywania wersji npm, bo npm służy wyłącznie do instalowania pakietów w odpowiednich wersjach. I tworzy przy tym płaską strukturę node_modules, w której istnieje jedna wersja danego pakietu (spełniająca wymagania wszystkich innych zależności). Jeśli taka nie istnieje, to w wypadku konfliktu inny pakiet posiada swoje zagnieżdżone node_modules.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
0 odpowiedzi 356 wizyt
pytanie zadane 28 lipca 2017 w JavaScript, jQuery, AJAX przez culprit Początkujący (290 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 23 lutego 2018 w HTML i CSS przez Rash Użytkownik (630 p.)
0 głosów
2 odpowiedzi 97 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

64,901 zapytań

111,372 odpowiedzi

234,336 komentarzy

46,748 pasjonatów

Przeglądających: 194
Pasjonatów: 10 Gości: 184

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...