Próbuję globalnie zainstalować właśnie opublikowany moduł npm. Za każdym razem, gdy próbuję zainstalować, z npm lub folderu, pojawia się ten błąd.
npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/takeapeek/lib/cmd.js'
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 3.8.0-19-generic
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "takeapeek"
npm ERR! cwd /home/giodamlio
npm ERR! node -v v0.10.6
npm ERR! npm -v 1.3.6
npm ERR! path /usr/local/lib/node_modules/takeapeek/lib/cmd.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/giodamlio/npm-debug.log
npm ERR! not ok code 0
Używam sudo i potrójnie sprawdziłem wszystko w pakiecie, wszystko powinno działać. Rozejrzałem się trochę i zobaczyłem kilka podobnych przypadków, z których żaden nie został rozwiązany. Oto, czego próbowałem.
- Uaktualnij npm (
sudo npm install -g npm
) - Wyczyść globalną pamięć podręczną npm (
sudo npm cache clear
) - Wyczyść pamięć podręczną użytkownika npm (
npm cache clear
)
Zauważyłem, że błąd miał związek z plikiem, do którego linkuję, a konkretnie gdy npm próbował wykonać chmod. To nie powinno stanowić problemu, mój lib/cli.js
ma normalne uprawnienia, a npm ma uprawnienia superużytkownika podczas tej instalacji.
Po przekopaniu się przez dokumentację npm znalazłem opcję, która powstrzymałaby npm od tworzenia linków bin ( --no-bin-links
), kiedy próbowałem z nim zainstalować, działało dobrze.
Więc o co chodzi? Czy to jakiś dziwny błąd z marginesami, który nie ma jeszcze rozwiązania?
Edycja: dla odniesienia, oto moduł, który przesłałem
--no-bin-links
prostu zatrzymuje npm przed dowiązaniem symbolicznym plików w pliku package.jsonbin
do ścieżki podczas instalacji globalnej.Odpowiedzi:
Ok, wygląda na to, że NPM używa twojego
.gitignore
jako podstawy dla.npmignore
pliku i dlatego ignoruje/lib
. Jeśli dodasz pusty.npmignore
plik do katalogu głównego aplikacji, wszystko powinno działać.[edytuj] - więcej informacji na temat tego zachowania tutaj: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
źródło
Napotkałem podobny problem,
rozwiązałem to.
źródło
npm cache verify
i zadziałało. dzięki za podpowiedź.npm install --cache /tmp/empty-cache
użyć tymczasowej pamięci podręcznej zamiast nukować rzeczywistą.Ten problem w jakiś sposób pojawił się u mnie na komputerze Mac, gdy próbowałem uruchomić
npm install -g bower
. To dawało mi wiele błędów, ponieważ nie mogłem znaleźć rzeczy takich jak pełne wdzięku-fs. Nie jestem pewien, jak pierwotnie zainstalowałem npm, ale wygląda na to, że być może zszedł z węzłem przy użyciu homebrew. Najpierw pobiegłemTo usunęło zarówno
node
inpm
z mojej ścieżki. Stamtąd właśnie ponownie go zainstalowałemKiedy to się skończyło, miałem
node
inpm
na swojej drodze i mogłem biecNastępnie pomyślnie zainstalowano altankę.
Aktualizowanie formuł naparu i uaktualnianie instalacji wydawało mi się nie działać, nie wiem dlaczego. Usunięcie
.npm
folderu było czymś, co zadziałało w przypadku innych osób i próbowałem tego bez powodzenia. Zrobiłem to tym razem na wszelki wypadek. Zauważ również, że żadna z poniższych sytuacji nie rozwiązała problemu u mnie, chociaż w przypadku innych:źródło
Otrzymałem ten błąd podczas instalacji npm i dodanie .npmignore nie rozwiązało go.
Próbowałem przejść do wspomnianego folderu i nie istniał. Błąd został naprawiony po utworzeniu folderu npm w folderze Roaming .
To jest w systemie Windows 8.1
źródło
Miałem ten sam problem i właśnie znalazłem obsługę nie wymienioną tutaj. Chociaż przyczyniłbym się do społeczności:
npm install -g myapp
nie kopiowałbin
katalogu. Okazało się, że tak jest, ponieważ nie uwzględniłem tegofiles
w moimpackage.json
źródło
files
kluczpackage.json
z niektórymi wpisami, takimi jakindex.js
iLICENSE
, ale niebin
folder. Więc działa, jeśli w ogóle nie mafiles
klucza lub jeśli jestfiles
klucz ORAZbin
folder do.Otrzymałem podobny błąd podczas
npm install
lokalnej instalacji:Nie jestem pewien, co było przyczyną błędu, ale ostatnio zainstalowałem lokalnie kilka nowych modułów węzłów, zaktualizowałem węzeł za pomocą homebrew i uruchomiłem 'npm update -g'.
Jedynym sposobem rozwiązania tego problemu było całkowite usunięcie lokalnego katalogu node_modules i
npm install
ponowne uruchomienie :źródło
W szczególności mam podobny problem: ERR! enoent ENOENT: brak takiego pliku lub katalogu, chmod 'node_modules / npm / node_modules / request / node_modules / http-signature / node_modules / sshpk / bin / sshpk-conv Próbowałem wszystkich powyższych rozwiązań, ale bez powodzenia. Używałem vagrant box, a projekt był w udostępnionym folderze. Problem wydaje się być tylko wtedy, gdy przenoszę projekt do innego nieudostępnionego folderu (z hostem), voila! problem rozwiązany. Na wypadek gdyby inna osoba też używała włóczęgi
źródło
Otrzymałem podobny komunikat o błędzie podczas próby
npm install
kilku zależności. Okazuje się, że niektóre z nich nie instalują się na Debianie / Ubuntu, ponieważ tego oczekują/usr/bin/node
się, będą wykonywalne węzłem. Aby to naprawić, musisz to zrobićLub jeszcze lepiej,
Więcej informacji: https://stackoverflow.com/a/21171188/7581
źródło
Napotkałem podobne zachowanie po aktualizacji do npm
6.1.0
. Wydawało się, że raz to zadziałało, ale potem dostałem się do stanu z tym błędem podczas próby zainstalowania pakietu, który został określony przez ścieżkę w systemie plików:Następujące rzeczy nie rozwiązały problemu :
rm -rf node_modules
npm cache clean
(dałnpm ERR! As of npm@5, the npm cache self-heals
....use 'npm cache verify' instead.
)npm cache verify
rm -rf ~/.npm
Jak rozwiązałem problem :
rm package-lock.json
źródło
Myślę, że w opublikowanym pakiecie npm brakuje skompilowanego skryptu kawy. Spróbuj napisać polecenie prepublish .
źródło
takeapeek/lib/cmd.js
że nie istnieje. Mimo że folder lib może być „tam” podczas publikowania, nie będzie „tam” podczas instalacji przez npm, chyba że jest częścią repozytorium lub jeśli użyjesz prepublish do jego utworzenia.W moim przypadku (wielokrotny kod ENOENT errno 34) problem dotyczył
~/.npm/
dostępu do katalogu. Wewnątrz było kilka podkatalogów posiadającychroot:root
uprawnienia, które powodowały problemy podczas wykonywania poleceń jako zwykły użytkownik (bezsudo
). Więc zmieniłem własność wszystkich podkatalogów i plików w katalogu~/.npm/
na mojego lokalnego użytkownika i grupę. To załatwiło sprawę na moim Ubuntu (na Macu też powinno działać).Powinieneś znać swoją nazwę użytkownika, prawda? Jeśli nie, uruchom
$ whoami
i zastąp nim również nazwę swojej grupy, na przykład:EDYTOWAĆ:
Przypadek testowy :
Z mojego konta lokalnego
/home/johnb
zainstalowałem npm globalnie jakiś generator dlayeoman
, na przykład:Charakter problemu :
Powyższe działanie spowodowało zainstalowanie niektórych zależności w
~/.npm/
katalogu, posiadającychroot:root
własność (z powodusudo ...
). Najwyraźniej npm nie działa jako użytkownik lokalny (lub później zmienia własność podkatalogów zależnych) podczas ściągania zależności i zapisywania ich w podkatalogu użytkownika lokalnego~/.npm/
. Tak długo, jak npm byłby tak nieostrożny w stosunku do podstawowych problemów związanych z bezpieczeństwem systemu plików unixa, problem będzie się powtarzał.Rozwiązanie :
Ciągle sprawdzaj, czy
~/.npm/
zawiera podkatalogi z własnością (i / lub uprawnieniami) innymi niż twoje lokalne konto użytkownika, zwłaszcza gdy instalujesz lub aktualizujesz coś za pomocąsodo
(root). Jeśli tak, zmień własność wewnątrz~/.npm/
na użytkownika lokalnego rekurencyjnie.Poproś
npm, bower, grunt, ...
społeczność, aby rozwiązała ten problem, tak jak to opisałem powyżej.źródło
Wystąpił ten błąd podczas próby zainstalowania wtyczki gruntowej. stwierdziłem, że mam przestarzałą wersję npm i błąd zniknął po zaktualizowaniu npm do najnowszej wersji
źródło
Próbowałem wszystkich rzeczy, które znalazłem w sieci (
npm cache clear
irm -rf ~/.npm
), ale wydaje się, że nic nie działa. Rozwiązaniem problemu była aktualizacja węzła (i npm) do najnowszej wersji. Spróbuj tego.źródło
W systemie Windows miałem podobny błąd. Wyszukaj wklej dane aplikacji i wyszukaj ciąg
npm
.Zastąpiłem ciąg
'npm'
(w tym cudzysłowy)'npm.cmd'
w obuatlasboard\lib\package-dependency-manager.js
iatlasboard\lib\cli\commands.js
. To rozwiązało problem.źródło
Ten sam błąd podczas globalnej instalacji (
npm install -g mymodule
) dla pakietu z nieistniejącym skryptem.W pliku package.json:
Ale
./bin/module
nie istniał, jak został nazwanymodulejs
.źródło
źródło
Możesz otrzymać ten błąd, jeśli twój node.js jest również w jakiś sposób uszkodzony. Naprawiłem ten błąd, całkowicie odinstalowując / restartując / instalując node.js i naprawiłem ten błąd, wraz z trzema innymi tajemniczymi błędami, które są wyświetlane.
źródło
Uważaj na nieprawidłowe wartości kluczy „directories” i „files” w pliku package.json
Jeśli zaczynasz od nowej aplikacji i chcesz rozpocząć całkowicie pusty, musisz albo rozpocząć od pełnego pustego folderu, albo mieć w nim prawidłowy plik package.json.
Jeśli nie chcesz najpierw tworzyć pliku package.json, po prostu wpisz:
npm i some_package
Pakiet o nazwie „some_package” powinien zostać poprawnie zainstalowany w nowym podkatalogu „node_modules”.
Jeśli najpierw utworzysz plik package.json, wpisz:
npm init
Zachowaj wszystkie wartości domyślne (po prostu klikając ENTER), powinieneś otrzymać prawidłowy plik.To powinno wyglądać tak:
Zwróć uwagę, że brakuje następujących kluczy: „ katalogi ”, „ repozytorium ” i „ pliki ”. Wygląda na to, że jeśli użyjesz nieprawidłowych wartości dla „ katalogów ” i / lub „ plików ”, nie będziesz w stanie zainstalować pakietu. Pozostawienie tych kluczy rozwiązało problem za mnie.
Zwróć także uwagę na klucz „ main ”. Ten jest obecny, ale zawiera nieprawidłową wartość. Plik „index.js” nie istnieje (jeszcze). Możesz go bezpiecznie usunąć.
Teraz wpisz:
npm i some_package
i pakiet o nazwie „some_package” powinien zostać poprawnie zainstalowany w nowym podfolderze „node_modules”.źródło
Próbowałem prawie wszystkiego, a potem w końcu to:
Po prostu usuń node_modules, a następnie uruchom
'npm install'
ponownieźródło
Miałem podobny problem z inną przyczyną:
yo node
generator dodał"files": ["lib/"]
do mojegopackage.json
i ponieważ mójcli.js
znajdował się pozalib/
katalogiem, był pomijany podczas publikowania w npm.(Problem Yeoman na https://github.com/yeoman/generator-node/issues/63 powinien wkrótce zostać naprawiony.)
źródło
Pojawiał się błąd „Błąd: ENOENT, stat 'C: \ Users \ nazwa_użytkownika \ AppData \ Roaming \ npm'. Ale nie było takiego katalogu. Utworzono katalog i instalacja npm zaczęła działać
źródło
Niedawno zaktualizowałem do węzła 4.2.1 na komputerze z systemem Windows 7 x64. Podczas biegania
Mam podobny błąd:
Myśląc, że jest to związane ze ścieżką AppData, bawiłem się
i
aby zmienić pola prefiksu, pamięci podręcznej i tmp, ale otrzymałem ten sam błąd z nowymi ścieżkami:
Wszystkie polecenia były uruchamiane jako Administrator, więc miałem pełne uprawnienia.
Potem pomyślałem, że są problemy z istniejącymi plikami, więc uruchomiłem:
Ale dostałem ten sam błąd. Jednak wciąż było kilka plików tymczasowych. Ręczne usunięcie wszystkich danych tymczasowych za pomocą cygwin w końcu rozwiązało problem:
Jeśli masz tylko cmd systemu Windows, możesz użyć czegoś takiego jak
aby usunąć wszystkie podkatalogi (chociaż jeśli masz głęboko zagnieżdżone zależności węzłów, jest to notorycznie problematyczne)
Więc może są jakieś problemy z aktualizacją npm i wiszącymi wersjami bower lub innych pakietów. W moim przypadku wydawało się, że to jest problem
źródło
Podczas instalacji ionica wyskoczył mi błąd
Nie było żadnego folderu o
ansi
tej ścieżce. Stworzyłem go tam i poprawnie zainstalowałem.źródło
Jeśli próbowałeś „dokonać instalacji” w katalogu projektu z tym błędem, możesz spróbować:
następnie możesz spróbować „dokonać instalacji”
Jeśli masz "npm ERR! Enoent ENOENT: brak takiego pliku lub katalogu, chmod '... / djam-backend / node_modules / js-beautify / js / bin / css-beautify.js'", możesz spróbować zainstalować niektóre starsze wersje js-beautify, więcej komentarzy: https://github.com/beautify-web/js-beautify/issues/1247
i uruchom "make install". Wydaje się, że działa w przypadku, gdy nie masz innych zależności, które wymagają wyższej wersji (1.7.0), w tym przypadku musisz obniżyć wersję tych pakietów również w packages.json.
lub
źródło
Żadne z powyższych nie działało dla mnie. Ale
yarn install
pracował, a potemnpm i
zaczął działać. Nie wiem, która przędza została naprawiona, ale szybkie i łatwe rozwiązanie!źródło
Po pierwsze
to zrób
Następnie zainstaluj wszystkie pliki, które chcesz dodać
źródło
Wystąpił podobny błąd z npm w kontenerze Dockera dla pakietu webpack. Problem został spowodowany przez argument wiersza poleceń --user polecenia docker run, ponieważ dany użytkownik i grupa tam w jakiś sposób zepsuły uprawnienia na woluminie lokalnym. Mam nadzieję, że to komuś pomoże :)
źródło
napotkałem podobny błąd, ale wielokrotnie próbowałem uruchomić polecenie create-react-app i ostatecznie zostało utworzone, to był problem z moim połączeniem internetowym. Sprawdź swoje łącze internetowe
źródło
Spróbuj tego
Następnie spróbuj tego polecenia, a zadziała
źródło