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

Object Storage Arubacloud
0 głosów
1,372 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 (600,810 p.)
To brzmi jak bug w npm, polecałbym zgłosić im issue.
komentarz 6 lipca 2018 przez Wiciorny Ekspert (269,710 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 (600,810 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,710 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 (600,810 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 551 wizyt
pytanie zadane 28 lipca 2017 w JavaScript przez culprit Początkujący (290 p.)
0 głosów
1 odpowiedź 698 wizyt
pytanie zadane 23 lutego 2018 w HTML i CSS przez Rash Użytkownik (620 p.)
0 głosów
0 odpowiedzi 354 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...