npm 错误!错误:EPERM:不允许操作,重命名
Posted
技术标签:
【中文标题】npm 错误!错误:EPERM:不允许操作,重命名【英文标题】:npm ERR! Error: EPERM: operation not permitted, rename 【发布时间】:2017-01-10 15:25:51 【问题描述】:当我执行npm install
时出现此错误
我以管理员身份运行 cmd 我之前跑过C:\projects******\node_modules\react-async-script' -> 'C:\projects*******\node_modules.react-async-script .删除'
npm cache clean
我确保所有其他应用程序都没有与node_modules
open 相关的任何内容
【问题讨论】:
以管理员身份运行 cmd 为我工作 在我的情况下,我必须以普通用户(不是管理员)的身份运行它并且它有效,它似乎是用户权限冲突。但似乎这里给出的所有其他解决方案 npm clean, npm install 都不是必需的。它是一个用户权限问题。如果更多人可以确认,我可以发布一个新的答案。 就我而言,我没有使用 Node.js 命令提示符。一旦我改变了它,它就可以工作了。 【参考方案1】:我在 Windows 10 中遇到了同样的问题。 只需按照以下步骤操作:
以管理员身份打开cmd。
安装更新的 npm 包。
npm i -g npm
npm init --yes
【讨论】:
【参考方案2】:尝试将文件重命名为另一个已存在的文件名可能会在 Windows 上导致 EPERM
错误。
【讨论】:
天哪。这就是问题所在。 有什么解决办法吗? @Zaid 避免将文件重命名为已经存在的文件名。例如,您可以先检查fs.stat
。此外,在竞争条件下添加错误捕获。
@ZachBloomquist 谢谢,伙计!我会尝试你的解决方案。我只是想用一个不存在的名称重命名一个文件夹。【参考方案3】:
在我的情况下,有些东西被锁定了,快速重启解决了它。
【讨论】:
【参考方案4】:只需从 npm 全局包的路径中删除包文件夹即可。然后重新安装软件包。 请注意,软件包全局安装在: C:\Users\your-name\AppData\Roaming\npm\node_modules
【讨论】:
【参考方案5】:以管理员身份打开命令提示符并导航到项目位置,然后运行 npm install。它对我有用。
【讨论】:
【参考方案6】:我做了以下事情:
-
已将 npm 升级到最新版本:
npm install -g
npm@6.5.0-next.0
从c:/users/[username]/AppData/Roaming/npm-cache
中删除了 npm-cache 文件夹
缓存清理了吗:npm cache clean --force
运行npm install
。
【讨论】:
【参考方案7】:对于某些人来说,AppRoot\npm 文件夹可能是个问题。有时 AppRoot 文件夹被标记为网络共享,因此 Antivirus 会阻止这些内容。按照下面的链接获取完整的解决方案。
https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/
我希望这会有所帮助。
【讨论】:
【参考方案8】:我遇到了同样的问题。错误的原因是文件路径中的字符不受支持。用英语替换了西里尔字母 - 它有帮助。
【讨论】:
【参考方案9】:这是由防病毒软件引起的典型错误。对于像我这样无法禁用 A/V(公司政策)的情况,有一种解决方法。
您必须更改 Npm
包内的 polyfills.js
:
[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js
查找以下语句:
if (process.platform === "win32")
在此语句中,有一个超时,在发生错误时重试。问题是在某些情况下,超时后,文件仍然被 A/V 锁定。解决方案是取消超时并让此语句循环。与之前代码的改动注释:
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)
【讨论】:
你先生是真正的MVP。 我遇到了类似的错误,禁用防病毒软件有所帮助。非常感谢。【参考方案10】:我的回答是先做npm cache clean --force
。然后运行npm install -g npm@5.3.0
安装npm 5.3.0 版本。对我来说,这个 npm 版本没有问题。
【讨论】:
【参考方案11】:npm 在scandir
对我来说失败了:
npm install -g webpack
...这可能是由于 npm 试图“修改”可能被其他进程锁定的文件,如提到的 here 和其他几个 github 线程。在强制清理缓存、验证缓存、以管理员身份运行、禁用 AV 等之后,真正对我有用的解决方案是关闭任何可能锁定文件的东西(即重新启动我的计算机) .
我希望这可以帮助正在苦苦挣扎的人。
【讨论】:
【参考方案12】:当我尝试使用带有强制选项的 npm install 来获取远程资源时,即使磁盘上存在本地副本,它也能正常工作。尝试运行
npm install --force
更新 对于我的一些同事来说,这个解决方案不起作用。但我们尝试使用yarn 而不是 npm。它一直工作(也更快)没有任何问题
yarn install [package-name]
【讨论】:
其他人建议关闭杀毒软件。对我来说,在我所在的网络上,这不是一个选择。 --force 标志为我解决了这个问题 我只用yarn解决了我的问题,所以我建议给他一个机会。【参考方案13】:不是package.json
,但出于某种原因,我的node_modules/
已变为只读。重置解决了这个问题。
【讨论】:
“重置”对我来说意味着1.
关闭VS,2.
从FileExplorer删除node_modules
3.
重新启动我的电脑4.
运行npm install --force
。然后终于成功了。
node_modules 文件夹>>属性>>取消选中只读对我有用。它发生在将文件夹复制到新位置后。希望这对某人有所帮助。【参考方案14】:
我得到了同样的东西。我在任何地方都没有找到这个,但它让我震惊的是,我们的虚拟机倾向于将文件更改为只读状态。于是我打开package.json
的文件属性,在“常规”选项卡中取消选择Read-only
。
步骤
-
转到
package.json
文件。
右键单击并选择属性。
在常规选项卡的属性部分,取消选择只读。
点击应用以应用更改。
【讨论】:
只读对我来说,虽然最初的问题是我通常只使用代码来安装。在这种情况下,我在 Visual Studio 中打开了一个新的应用程序实例,这样我就可以从旧版本中移植一些更改,并且 VS 立即开始自行安装。然后我像往常一样打开代码来运行 npm install ,这两个应用程序都陷入了困境。在几次失败后,我从我们应用程序的工作根版本中大量删除了一个节点模块,以允许我向后移植更改。这个文件夹是只读的,所以继续阻止事情。【参考方案15】:我遇到了同样的错误,根据https://github.com/Medium/phantomjs/issues/19,这可能是由您的防病毒软件引起的。我在安装期间禁用了我的,并以管理员身份在 cmd 上执行了“npm install”,它工作正常。 希望这会有所帮助。
【讨论】:
根据github.com/npm/npm/issues/12059,此问题已得到修复。没有关于它将进入什么版本的消息。对于每个 cmets,禁用 AV 并不总是有效。 就我而言,我必须在安装过程中关闭 SourceTree。以上是关于npm 错误!错误:EPERM:不允许操作,重命名的主要内容,如果未能解决你的问题,请参考以下文章
npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048