先ほど公開したnpmモジュールをグローバルにインストールしようとしています。npmまたはフォルダーからインストールしようとするたびに、このエラーが発生します。
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
私はsudoを使用しており、パッケージ内のすべてをトリプルチェックして、すべてが機能するはずです。私は周りを調べてみましたが、解決されていない類似のケースがいくつかありました。これが私が試したものです。
- npmをアップグレード(
sudo npm install -g npm
) - グローバルnpmキャッシュをクリア(
sudo npm cache clear
) - ユーザーnpmキャッシュをクリアします(
npm cache clear
)
特にnpmがchmodを実行しようとしたときに、エラーがパスにリンクしているファイルに関係していることに気付きました。これは問題になりません。私のlib/cli.js
インストールには通常の権限があり、npmにはこのインストール中のスーパーユーザー権限があります。
npmのドキュメントを詳しく調べた後、npmがbinリンク(--no-bin-links
)を作成しないようにするオプションを見つけました。
それで、契約は何ですか?これはまだ解決策がない奇妙なフリンジケースのバグですか?
編集:参考までに、ここに私がアップロードしたモジュールがあります
--no-bin-links
ちょうどpackage.jsonの中のファイルシンボリックリンクからNPMを停止bin
グローバルインストールのパスにハッシュを。