• 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?

VPS Starter Arubacloud
0 głosów
1,350 wizyt
pytanie zadane 5 lipca 2018 w JavaScript przez lukasz21 Obywatel (1,090 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,020 p.)
Pokaż kod. Daj więcej informacji. Przeładowujesz stronę?
1
komentarz 5 lipca 2018 przez lukasz21 Obywatel (1,090 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.
1
komentarz 6 lipca 2018 przez Comandeer Guru (599,730 p.)
To brzmi jak bug w npm, polecałbym zgłosić im issue.
komentarz 6 lipca 2018 przez Wiciorny Ekspert (269,120 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 Guru (599,730 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 Ekspert (269,120 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
1
komentarz 6 lipca 2018 przez Comandeer Guru (599,730 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 547 wizyt
pytanie zadane 28 lipca 2017 w JavaScript przez culprit Początkujący (290 p.)
0 głosów
1 odpowiedź 694 wizyt
pytanie zadane 23 lutego 2018 w HTML i CSS przez Rash Użytkownik (620 p.)
0 głosów
0 odpowiedzi 339 wizyt

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...