web-dev-qa-db-ja.com

NPMは依存関係をインストールできません-ロックされていないもののロックを解除しようとします

Package.jsonファイルでnpmインストールを実行しようとしましたが、多くの問題があります。すべての依存関係で「エラー:ロックされていないXXXのロックを解除しようとしています」と表示され続けます。それらの1つを次に示します。

Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
        at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
        at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
        at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
        at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
        at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
        at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
        at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
        at Object.oncomplete (fs.js:107:15)

Sudoとして実行しようとすると、さらに進んでいくつかのパッケージのインストールを開始するようですが、代わりにいくつかの新しいエラーがポップアップします:

> [email protected] postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js

Shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied

node.js:811
    var cwd = process.cwd();
                      ^
Error: EACCES, permission denied
    at Function.startup.resolveArgv0 (node.js:811:23)
    at startup (node.js:58:13)
    at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back  [email protected] { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'

最近、ノードとnpmのインストールを更新しました。それはおそらくそれと関係があるのか​​もしれません。また、私の開発の大部分はオフィスで行われており、今日はVPNを介して作業しているので、おそらくそれも何か関係があるでしょう。

何か案は?

192
TJ Kirchner

次のphotusenigmaに従って: https://github.com/npm/npm/issues/4815

ターミナルウィンドウでこれらのコマンドを実行します(注-$ USER部分を置き換えないでください...ユーザーを取得するためのLinuxコマンドです!):

Sudo chown -R $USER ~/.npm
Sudo chown -R $USER /usr/local/lib/node_modules

...そして...(私と同じように)Macを使用していて、これらのコマンドを実行した後でもエラーが表示される場合は、この最後のコマンドを実行してください。 (これを行う前にテストすることをお勧めします。本当に必要であると思われない限り、ENTIRE/usr/localディレクトリーの許可を変更するのは嫌です!)

Sudo chown -R $USER /usr/local
421
alexoviedo999

今日の午後、同僚と仕事をして、問題が何であるかを見つけました。ホームディレクトリの「.npm」フォルダは、自分ではなくルートユーザーが所有していました。何が原因で起こったのか分かりません。たぶん、ルート管理者としてnodeまたはnpmをインストールしたかもしれません。いずれにせよ、Sudo chown -R [username] .npmを実行しただけで、ようやくプロジェクトからnpm installコマンドを実行できるようになりました!

152
TJ Kirchner

私の場合、問題は、HOMEディレクトリを持たないユーザーでnpmを呼び出していたため、たとえば次のコマンドは失敗します。

Sudo -u someUser npm install

解決策は、someUserが書き込みアクセス権を持つホームディレクトリを提供することです。

Sudo -u someUser HOME=/some/directory npm install
21
Bjarke Walling

同じ問題があり、受け入れられた回答に従って権限を変更することで修正しました:

Sudo chown -R $USER ~/.npm

ただし、システムリソース(Sudo chown -R $USER /usr/local/lib/node_modules)のアクセス許可をダウングレードするため、2番目のコマンドは使用しないでください。良い考えではありません。

レコードの場合:/usr/localの「usr」はnix System Resourcesを表します。

11
chris

これはどれも私にとってはうまくいきませんでした。以下を実行して、文字通りrootとして実行する必要がありました。

Sudo su -
Sudo npm install forever -g

次に、パッケージがLinux Ubuntu 14.04にインストールされました。

4
occasl

次のコマンドで権限の問題を修正する必要があります。

Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

公式に推奨される別のソリューションについては、こちらをご覧ください。

https://docs.npmjs.com/getting-started/fixing-npm-permissions

2
Tim White

私の解決策:

Sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE

私の場合は:

Sudo chown -R $USER /usr/local/lib/node_modules/appium/

しかし、私は最終的に同じ問題を抱えていました

npm cache clean

出来た !

1
mayo

免責事項

私はWindowsユーザーです。しかし、私のチームと私はnpmインストールエラーに関する多くの問題に遭遇しました。

問題

以下は、学んだ教訓のリストであり、常に私たちを救ってきた根本的な解決策です。

  1. node_modulesnpmローカルインストールディレクトリは、欠点による変更から保護されます255文字より長いパスを処理できないなどのOSの問題。
  2. コマンドラインツールを使用してフォルダを消去すると、エクスプローラにフォルダが存在するように見えますが、アクセスしようとするといくつかの許可エラーが発生します。
  3. アンチウイルスおよび/またはローカルポリシーマネージャーに応じて、node_modulesフォルダーを作成し、後でそのフォルダーへのアクセスまたは権限を委任して、多くのインストールエラー。
  4. Npmログを有効にして、次の問題の可能性に関するさらなる洞察を得ます。

    npm install --loglevel verbose

ラジカル

rimraf グローバルにインストール

 npm install rimraf -g

node_modulesでrimrafを実行します:

rimraf yourDir/node_modules

次に、実行してみてください:

npm install

警告!

またはそこの欠如。コマンドrimrafの後に続くことに非常に注意してください。警告もプロンプトもありません。何もありません。それは、まるでそこになかったかのように、地球のきれいな段階からディレクトリを単に消去します。ご自身の責任で試してください。

0
Wilmer Saint

私は同じ問題を抱えており、npm関連のファイルとディレクトリの許可/所有権を修正しようとしました時間単位ですが、運がありませんでした。

突然、存在しないディレクトリを指すcacheエントリを持つ~/.npmrcファイルがあることがわかりました。デフォルトのキャッシュの場所を使用するためにそのcacheプロパティを削除し、解決しました。

0
cheolgook