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を介して作業しているので、おそらくそれも何か関係があるでしょう。
何か案は?
次の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
今日の午後、同僚と仕事をして、問題が何であるかを見つけました。ホームディレクトリの「.npm」フォルダは、自分ではなくルートユーザーが所有していました。何が原因で起こったのか分かりません。たぶん、ルート管理者としてnodeまたはnpmをインストールしたかもしれません。いずれにせよ、Sudo chown -R [username] .npm
を実行しただけで、ようやくプロジェクトからnpm install
コマンドを実行できるようになりました!
私の場合、問題は、HOMEディレクトリを持たないユーザーでnpmを呼び出していたため、たとえば次のコマンドは失敗します。
Sudo -u someUser npm install
解決策は、someUser
が書き込みアクセス権を持つホームディレクトリを提供することです。
Sudo -u someUser HOME=/some/directory npm install
同じ問題があり、受け入れられた回答に従って権限を変更することで修正しました:
Sudo chown -R $USER ~/.npm
ただし、システムリソース(Sudo chown -R $USER /usr/local/lib/node_modules
)のアクセス許可をダウングレードするため、2番目のコマンドは使用しないでください。良い考えではありません。
レコードの場合:/usr/local
の「usr」はnix System Resourcesを表します。
これはどれも私にとってはうまくいきませんでした。以下を実行して、文字通りrootとして実行する必要がありました。
Sudo su -
Sudo npm install forever -g
次に、パッケージがLinux Ubuntu 14.04にインストールされました。
次のコマンドで権限の問題を修正する必要があります。
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
公式に推奨される別のソリューションについては、こちらをご覧ください。
https://docs.npmjs.com/getting-started/fixing-npm-permissions
私の解決策:
Sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE
私の場合は:
Sudo chown -R $USER /usr/local/lib/node_modules/appium/
しかし、私は最終的に同じ問題を抱えていました
npm cache clean
出来た !
免責事項
私はWindowsユーザーです。しかし、私のチームと私はnpmインストールエラーに関する多くの問題に遭遇しました。
問題
以下は、学んだ教訓のリストであり、常に私たちを救ってきた根本的な解決策です。
Npmログを有効にして、次の問題の可能性に関するさらなる洞察を得ます。
npm install --loglevel verbose
ラジカル
rimraf グローバルにインストール
npm install rimraf -g
node_modulesでrimrafを実行します:
rimraf yourDir/node_modules
次に、実行してみてください:
npm install
警告!
またはそこの欠如。コマンドrimraf
の後に続くことに非常に注意してください。警告もプロンプトもありません。何もありません。それは、まるでそこになかったかのように、地球のきれいな段階からディレクトリを単に消去します。ご自身の責任で試してください。
私は同じ問題を抱えており、npm関連のファイルとディレクトリの許可/所有権を修正しようとしました時間単位ですが、運がありませんでした。
突然、存在しないディレクトリを指すcache
エントリを持つ~/.npmrc
ファイルがあることがわかりました。デフォルトのキャッシュの場所を使用するためにそのcache
プロパティを削除し、解決しました。