「npm install」を実行すると、このエラーが発生します
npm ERR! Error: EPERM: operation not permitted, rename C:\projects\******\node_modules\react-async-script' -> 'C:\projects\*******\node_modules\.react-async-script.DELETE'
私の状況では、それが役立ちました:
キャッシュを消去
npm cache clean --force
最新バージョンのnpmを管理者としてグローバルにインストールします。
npm install -g npm@latest --force
キャッシュを消去
npm cache clean --force
コンポーネントをもう一度インストールしてください。
これで問題が解決することを願っています。解決しない場合は、しばらくの間、ウイルス対策プログラムを切り替えてみてください。
ローカルコピーがディスク上に存在する場合でも、リモートリソースを取得する強制オプションを使用してnpmインストールを試みたときに機能しました。実行してみてください
npm install --force
Updated一部の同僚にとって、このソリューションは機能していませんでした。しかし、npmの代わりに yarn を使用してみました。常に問題なく動作します(より高速です)
yarn install [package-name]
--force
オプション(常により良いアプローチです)を避けたい場合、をお勧めしますプロジェクトの実行を停止したことを確認してください。これは通常、私が見たケースのほぼ90%でファイルをロックする主な理由です
1- Angularでng s
を停止し、Reactでnpm start
を停止します通常、このエラーは、開発サーバーがプロジェクトを実行しているときに発生します。 npmはそれらを更新できないため、このエラーをスローします
2- 上記が機能しない場合は、ワークスペースが開かれているコードエディターを閉じてみてください(ファイルまたは何かをロックしていた可能性があります)
したがって、コードエディターを閉じて実行してみてください。
npm install
3- それでも動作しない場合は、--force
オプションを試すことができます
npm install --force
package.json
ではなく、何らかの理由で、私のnode_modules/
は読み取り専用になりました。これをリセットすると修正されました。
https://github.com/Medium/phantomjs/issues/19 によると、同じエラーが発生していましたが、これはウイルス対策ソフトウェアが原因である可能性があります。私はインストール中に私のものを無効にし、管理者としてcmdで「npm install」を実行しました。お役に立てれば。
私は同じことを得ていました。これはどこにも見つかりませんでしたが、VMがファイルを読み取り専用状態に変更する傾向があることに気づきました。そこで、package.json
のファイルプロパティを開き、[全般]タブでRead-only
の選択を解除しました。
ステップ
package.json
ファイルに移動します。私はこの問題をWindowsでのみ複数回経験しましたが、通常はこれらの順序で試します。
通常、これらの手順のいずれかでnpmインストールを試行すると解決します。
私の場合、何かがロックされ、クイックリブートで解決されました。
これは、アンチウイルスによって引き起こされる典型的なエラーです。私のような場合、A/V(会社のポリシー)を無効にできない回避策があります。
Npm
パッケージ内のpolyfills.js
を変更する必要があります。
[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js
次のステートメントを探してください。
if (process.platform === "win32") {
このステートメントの内部には、エラーが発生した場合に再試行を行うタイムアウトがあります。問題は、場合によっては、タイムアウト後もファイルが音声ビデオによってロックされていることです。解決策は、タイムアウトを切り捨てて、このステートメントをループに入れることです。前のコードでの変更はコメントしました:
if (platform === "win32") {
fs.rename = (function (fs$rename) { return function (from, to, cb) {
var start = Date.now()
var backoff = 0;
fs$rename(from, to, function CB (er) {
if (er
&& (er.code === "EACCES" || er.code === "EPERM")
/*&& Date.now() - start < 60000*/) {
console.log("Retrying rename file: " + from + " <> " + to)
fs$rename(from, to, CB);
/*setTimeout(function() {
fs.stat(to, function (stater, st) {
if (stater && stater.code === "ENOENT")
fs$rename(from, to, CB);
else
cb(er)
})
}, backoff)*/
if (backoff < 100)
backoff += 10;
return;
}
if (cb) cb(er)
})
}})(fs.rename)
}
5.4.2にnpmに更新した後、同じ問題が発生しました。npmはほとんどのnpmコマンドで同じエラーを出します。一部のソリューションでは、-no-optionalで実行することをお勧めします。
常に機能しませんでした。
他のダウングレードが提案された、私はダウングレードしたくありませんでした。
インストールに問題があるのではないかと疑ったが、それが何であるかはわからない。
だから私はnpmを再更新しました:
npm i -g npm
それ以来、うまくいきました。
管理者としてコマンドプロンプトを開き、プロジェクトの場所に移動して、npm installを実行します。それは私のために働いた。
AppRoot\npmフォルダーが問題になる場合があります。場合によっては、AppRootフォルダーがネットワーク共有としてマークされているため、ウイルス対策がブロックします。完全なソリューションについては、以下のリンクに従ってください。
https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/
これがお役に立てば幸いです。
npmはscandir
で私のために失敗していました:
npm install -g webpack
...これは、npmが here および他のいくつかのgithubスレッドで言及されている他のプロセスによって潜在的にロックされたファイルを「変更」しようとしたために発生する可能性があります。キャッシュを強制的にクリーニングした後、キャッシュを検証し、管理者として実行し、AVを無効にするなど、実際に働いていたソリューションがファイルをロックしている可能性のあるものを閉じていました(つまり、コンピューターの再起動)。
これが誰かの苦労を助けることを願っています。
同じ問題がありました。エラーの理由は、ファイルへのパス内のサポートされていない文字です。英語のキリル文字を置き換えた-それは助けた。
ファイルの名前を既に存在する別のファイル名に変更しようとすると、WindowsでEPERM
エラーが発生する可能性があります。
私の答えは、最初にnpm cache clean --force
を実行することです。次に、npm install -g [email protected]
を実行して、npm 5.3.0バージョンをインストールします。私にとって、このnpmバージョンは問題なく動作します。
私は次のことをしました:
npm install -g [email protected]
c:/users/[username]/AppData/Roaming/npm-cache
npm cache clean --force
npm install
を実行しました。Npmグローバルパッケージのパスからパッケージフォルダーを削除するだけです。その後、パッケージを再インストールします。パッケージは次の場所にグローバルにインストールされることに注意してください。C:\ Users\your-name\AppData\Roaming\npm\node_modules
私はWindows 10でも同じ問題を抱えていました。次の手順に従ってください:
管理者としてcmdを開きます。
uppdated npmパッケージをインストールします。
npm i -g npm
npm init --yes
Martin Kearnがコメントで指摘したように、Visual Studioを閉じるはこれらのnpmパーミッションの問題を解決しました。明らかに、VSはnode_modules
のファイルをロックすることがあります。