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.json bin
do ścieżki podczas instalacji globalnej.