web-dev-qa-db-ja.com

エラー:ENOENT、chmodのnpmインストールエラー

私は今公開した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!     <[email protected]>

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)を作らないようにするオプションを見つけました。それを使ってインストールしようとすると、うまくいきました。

それで、契約は何ですか?これはいくつかありますか 奇妙なフリンジケースのバグ まだ解決策がありませんか?

編集:参考として、 here は私がアップロードしたモジュールです

103
giodamelio

NPMは.gitignore.npmignoreファイルのベースとして使用しているので、/libは無視されます。空の.npmignoreファイルをアプリケーションのルートに追加すれば、すべてうまくいくはずです。

[編集] - ここでこの振る舞いに関する詳細情報: https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package

111
badsyntax

私は同様の問題に遭遇しました、

npm cache clean

それを解決しました。

97
Genjuro

私はnpmのインストール時にこのエラーが発生していましたが、.npmignoreを追加しても解決しませんでした。

エラー:ENOENT、状態 'C:\ Users\My-UserName\AppData\Roaming\npm'

上記のフォルダに移動しようとしましたが、存在しませんでした。 --- 作成済みnpm --- ローミングフォルダにあるときのエラーが修正されました。

これはWindows 8.1にあります

9
Vijay Vepakomma

私がnpm install -g bowerを実行しようとしていたとき、この問題はどういうわけか私のためにMac上で私に起こりました。それは私にgraceful-fsのようなものを見つけることができなかったことに対する多くのエラーを与えていました。どうやってnpmをインストールしたのか私にはわかりませんが、おそらく自作を使ったノードでダウンしたようです。初めて走った

brew uninstall node

これにより、パスからnodenpmの両方が削除されました。そこから私はそれを再インストールしました

brew install node

それが完了したとき、私は私のパスにnodenpmを持っていて、実行することができました

rm -rf ~/.npm
npm install -g bower

これはそれからうまくbowerをインストールしました。

醸造公式の更新とインストールのアップグレードは私にはうまくいかないようでした、私はその理由がわかりません。 .npmフォルダの削除は他の人々のために働いていたものでした、そして、私は成功することなくそれを試みました。念のため今回行った。それは他の人のために解決したが、以下のどちらも私のために問題を解決しなかったことにも注意してください。

npm cache clean
Sudo npm cache clean
9
user1978019

私は同じ問題を抱えていて、そしてここで言及されていない処理をただ見つけました。私はコミュニティに貢献したいと思いますが:

npm install -g myappbinディレクトリをコピーしていませんでした。私はこれを私のpackage.jsonfilesに含めなかったことが原因であることがわかりました

"files": [
  "lib",
  "bin" // this was missing
]
4
dthree

いくつかの依存関係をnpm installしようとしたときにも、同様のエラーメッセージが表示されました。そのうちのいくつかは/usr/bin/nodeがノード実行可能ファイルであることを期待しているのでDebian/Ubuntuへのインストールに失敗します。修正するには、する必要があります

Sudo ln -s nodejs /usr/bin/node 

あるいはもっと良い

Sudo apt-get install nodejs-legacy

詳細については: https://stackoverflow.com/a/21171188/7581

3
itsadok

ローカルインストールのnpm installで同様のエラーが発生しました。

npm ERR! enoent ENOENT: no such file or directory, stat '[path/to/local/installation]/node_modules/grunt-contrib-jst'

何がエラーの原因であるかはわかりませんが、最近、新しいノードモジュールをローカルに2つインストールし、nodeを自作でアップグレードして、 'npm update -g'を実行しました。

私がこの問題を解決することができた唯一の方法は、ローカルのnode_modulesディレクトリを完全に削除し、再度npm installを実行することでした。

cd [path/to/local/installation]
npm rm -rdf node_modules
npm install
3
g.carey

私の場合(複数コードENOENT errno 34)に問題は~/.npm/ディレクトリアクセスにありました。その中にはroot:root権限を持つサブディレクトリがいくつかあり、それは私が普通のユーザーとしてコマンドを実行している間(Sudoなしで)問題を引き起こしていました。だから私は~/.npm/ディレクトリ内のすべてのサブディレクトリとファイルの所有権を自分のローカルユーザーとグループに変更しました。それが私のUbuntuのトリックでした(Macでもうまくいきます)。

$ Sudo chown yourusername.yourgroupname ~/.npm/ -R

あなたはあなたのユーザー名を知っているべきですよね?もしそうでなければ、$ whoamiを実行し、あなたのグループ名もそれに置き換えてください。

$ Sudo chown johnb.johnb ~/.npm/ -R

編集:

テストケース

私のローカルアカウント/home/johnbからyeoman用のジェネレータをグローバルにnpmインストールしました。

$ Sudo npm install -g generator-laravel

問題の性質

上記のアクションにより、(~/.npm/のため)root:root所有権を持つSudo ... dir内に依存関係がインストールされました。明らかにnpmは、依存関係を引っ張ってそれらをローカルユーザのサブディレクトリ~/.npm/に書き込むときには、ローカルユーザとしては動作しません(または後で依存関係のサブディレクトリの所有権を変更します)。基本的なUNIXファイルシステムのセキュリティ問題に対してnpmがそれほど不注意である限り、問題は再発します。

解決策

  1. 特にsodo(root)を使用して何かをインストールまたは更新する場合は、~/.npm/にローカルユーザーアカウント以外の所有権(またはアクセス許可)を持つサブディレクトリが含まれているかどうかを継続的に確認してください。そうであれば、~/.npm/内の所有権を再帰的にローカルユーザーに変更します。

  2. npm, bower, grunt, ...コミュニティに、私が上で説明したように、彼らがこの問題に対処するように依頼します。

2
paperclip

私は特に似たような問題を抱えています:ERR! ENOENT ENOENT:そのようなファイルやディレクトリはありません、chmod 'node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv私は上記の解決策をすべて試しましたが、運が悪くなりました。私はvagrant boxを使っていました、そしてプロジェクトは共有フォルダーにありました。プロジェクトを別の非共有フォルダ(ホストとは別のフォルダ)に移動すると、問題はそこだけにあるようです。問題が解決しました。万が一他の人が浮浪者を使っていた場合

2
joaco1977

あなたのコンパイルされたコーヒースクリプトは公開されているnpmパッケージから欠けていると思います。 prepublish コマンドを書いてみてください。

2
leeway

不機嫌そうなプラグインをインストールしようとしたときに私はこのエラーを得た。古いバージョンのnpmを使用していて、npmを最新バージョンに更新した後にエラーが消えました。

npm install -g npm
2
Prabhu Murthy

ネットで見つけたもの(npm cache clearrm -rf ~/.npm)をすべて試しましたが、うまくいくようには思えません。この問題を解決したのは、ノード(およびnpm)を最新バージョンに更新することでした。試してみてください。

1
Nikola M.
  1. 最新バージョンのノードをインストールする
  2. 実行:npm cache clean
  3. Npm install cordova -gを実行します。
1

Windowsでは、私は同じようなエラーがありました。 App Dataを貼り付けて検索し、文字列npmを検索します。

'npm''npm.cmd'の両方で、文字列atlasboard\lib\package-dependency-manager.js(引用符を含む)をatlasboard\lib\cli\commands.jsに置き換えました。これで問題は解決しました。

1

Node.jsが何らかの理由で破損している場合も、このエラーが発生する可能性があります。私は完全にuninstall/restart/install node.jsでこのエラーを修正しました、そしてそれは投げられる3つの他の不可解なエラーと共にこのエラーを修正しました。

1
LAdams87

存在しないスクリプトを含むパッケージに対するグローバルインストール(npm install -g mymodule)中の同じエラー。

Package.jsonで:

    ...
    "bin": {
      "module": "./bin/module"
    },
    ...

しかし./bin/modulemodulejsという名前のため存在しませんでした。

1
hg.

Package.jsonのキー "directories"と "files"に無効な値を指定してください。

新しいアプリケーションから始めて、完全に空白から始めたい場合は、完全に空のフォルダから始めるか、またはその中に有効なpackage.jsonファイルを入れる必要があります。

最初にpackage.jsonファイルを作成したくない場合は、次のように入力してください。npm i some_package

「some_package」という名前のパッケージは、新しいサブフォルダ「node_modules」に正しくインストールされるはずです。

最初にpackage.jsonファイルを作成する場合は、次のように入力します。npm initすべてのデフォルトをそのまま使用する(ENTERをクリックするだけで)、有効なファイルになるはずです。

これは次のようになります。

{
  "name": "yourfoldername",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

"ディレクトリ"、 "リポジトリ"、 "ファイル"というキーがないことに注意してください。 "directories"や "files"、あるいはその両方に誤った値を使用した場合は、パッケージをインストールできません。これらのキーを除外して、私のために問題を解決しました。

キー "main"にも注意してください。これは存在しますが、無効な値が含まれています。ファイル "index.js"はまだ存在しません。安全に削除できます。

npm i some_packageと「some_package」という名前のパッケージは新しいサブフォルダ「node_modules」に正しくインストールされるはずです。

1
RWC

「エラー:ENOENT、統計「C:\ Users\userName\AppData\Roaming\npm」というエラーが表示されました。ただし、そのようなディレクトリはありませんでした。ディレクトリを作成し、npmインストールが機能し始めました

0
k.iyengar

私はnpm 6.1.0にアップグレードした後に同様の挙動に遭遇しました。それは一度うまくいったようですが、それから私はファイルシステムのパスによって指定されたパッケージをインストールしようとしている間このエラーの状態になりました:

npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

以下のこと問題を解決しなかった

  • rm -rf node_modules
  • npm cache cleannpm ERR! As of npm@5, the npm cache self-heals....use 'npm cache verify' instead.を与えました)
  • npm cache verify
  • rm -rf ~/.npm

私はどのように問題を解決した

  • rm package-lock.json
0
Ian

私は最近、Windows 7 x 64マシンでノード4.2.1にアップグレードしました。実行時

npm install -g bower

私は同様のエラーを得ました:

npm ERR! ENOENT ENOENT:そのようなファイルやディレクトリはありません、 'C:\ Users\THE_USERNAME\AppData\Local\Temp\npm-THE_HASH'を開きます。

それがAppDataパスに関連していると考えて、私はと遊んだ

npm config edit

そして

npm config edit --global

接頭辞、キャッシュ、およびtmpフィールドを変更するが、新しいパスで同じエラーを受け取る場合

npm ERR! ENOENT ENOENT:そのようなファイルやディレクトリはありません、 'C:\ Users\THE_USERNAME\npm-temp\npm-THE_HASH'を開きます。

すべてのコマンドは管理者として実行されたので、私は完全な権限を持っていました。

それから私は実行したので、私は既存のファイルにいくつかの問題があると思いました:

npm cache clean

しかし、同じエラーが発生しました。しかし、まだ一時ファイルがいくつかありました。 cygwinを使ってすべての一時データを手動で削除することで、ようやく問題が解決しました。

rm -rf bower bower.cmd node_modules etc

Windows cmdしかない場合は、次のようにします。

rmdir /S THE_TEMP_DIR

すべてのサブディレクトリを削除する(ノードの依存関係が深くネストされている場合は、これは非常に問題があります)。

だから、多分npmをアップグレードしてbowerのバージョンや他のパッケージがぶら下がっていることに問題があるかもしれません。私の場合はそれが問題のようでした

0
Andrew Johnston

私はyo nodeジェネレータが私の"files": ["lib/"]package.jsonを追加したこと、そして私のcli.jslib/ディレクトリの外にあったので、npmに発行するときそれがスキップされていました。

(Yeomanの問題は https://github.com/yeoman/generator-node/issues/6 もうすぐ修正されるはずです。)

0
Nathan Friedly

あなたがこのエラーであなたのプロジェクトディレクトリに "make install"しようとしたなら、あなたはそれを試すことができます:

rm -rf ./node_modules
npm cache clear
npm remove sails

それならあなたは "make install"を試すことができます。

"npm ERR!enoent ENOENT:そのようなファイルやディレクトリはありません、chmod '.../djam-backend/node_modules/js-bin/css-beautify.js'"がある場合は、インストールを試みてください。いくつかの以前のバージョンのjs-beautify、より多くのコメント: https://github.com/beautify-web/js-beautify/issues/1247

"dependencies": {
  ...
  "js-beautify": "1.6.14"
  ...
}

そして実行 "make install"。この場合、より高いバージョン(1.7.0)を必要とする他の依存関係がなければ、これはうまくいくようです。このパッケージをpackages.jsonでもダウングレードする必要があります。

または

0
Alex

はじめに

 npm rm -rdf node_modules

それから

npm install

その後、追加したいファイルをインストールします

0
Shreyash Shetty

イオンをインストールしている間、私はエラー以下になりました

115648エラーENOENT ENOENT:そのようなファイルまたはディレクトリはありません。名前を 'C:\ Users\UserName\AppData\Roaming\npm\node_modules.staging\ansi-b11f0c4b' - > 'C:\ Users\UserName\AppData\Roaming\npm\node_modules \イオン\ node_modules\cordova-lib\node_modules\ansi '

そのパスにansiというフォルダーはありませんでした。私はそれをそこに作りました、そしてそれは正しくインストールされました。

0
Vijay Mishra

上記のどれも私のために働きませんでした。しかしyarn installは機能し、それからnpm iは機能し始めました。糸がどのように固定されたのかわからないが、素早く簡単な解決策!

0
Todd Hale