• 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
295 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 (26,640 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 (452,460 p.)
To brzmi jak bug w npm, polecałbym zgłosić im issue.
komentarz 6 lipca 2018 przez Wiciorny Maniak (66,580 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 (452,460 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,580 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 (452,460 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 338 wizyt
pytanie zadane 28 lipca 2017 w JavaScript, jQuery, AJAX przez culprit Początkujący (290 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 23 lutego 2018 w HTML i CSS przez Rash Użytkownik (630 p.)
0 głosów
2 odpowiedzi 64 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

62,369 zapytań

108,500 odpowiedzi

226,513 komentarzy

35,488 pasjonatów

Przeglądających: 312
Pasjonatów: 15 Gości: 297

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.

...