Sto cercando di installare globalmente un modulo npm che ho appena pubblicato. Ogni volta che provo a eseguire l'installazione, da npm o dalla cartella, ottengo questo errore.
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
Sto usando sudo e ho controllato tre volte tutto nel pacchetto, tutto dovrebbe funzionare. Ho cercato in giro e ho visto un paio di casi similer nessuno dei quali è stato risolto. Ecco cosa ho provato.
- Aggiorna npm (
sudo npm install -g npm
) - Cancella la cache npm globale (
sudo npm cache clear
) - Cancella la cache npm dell'utente (
npm cache clear
)
Ho notato che l'errore aveva a che fare con il file che sto collegando al percorso, in particolare quando npm ha provato a fare un chmod. Questo non dovrebbe essere un problema, my lib/cli.js
ha i permessi normali e npm ha i permessi di superutente durante questa installazione.
Dopo aver esaminato i documenti di npm ho trovato un'opzione che avrebbe impedito a npm di creare i collegamenti bin ( --no-bin-links
), quando ho provato l'installazione con esso, ha funzionato bene.
Allora qual è il problema? È questo uno strano bug di frangia che non ha ancora una soluzione?
Modifica: per riferimento, ecco il modulo che ho caricato
--no-bin-links
solo interrompe npm dal collegamento simbolico ai file nell'hash di package.json bin
al percorso durante l'installazione globale.