npm install 报错 Error: EPERM: operation not permitted, rename

凌祈丶微光 2024-07-24 17:33:01 阅读 75

报错的解决方案

原因1: 权限不足原因2:缓存出错方法1方法2

原因3:npm版本不够原因4:网络不稳定方法1方法2

原因5: 杀毒软件问题方法1方法2

其他:待补充

原因1: 权限不足

用管理员身份打开终端再执行命令。

原因2:缓存出错

方法1

删除C:\Users{账户}\下的.npmrc文件删除node_modules文件夹执行命令<code>npm cache clean -f然后执行安装命令

方法2

删除node_modules文件夹执行命令npm cache clean -f重启电脑再次执行安装命令

原因3:npm版本不够

执行npm install npm@6.0.0执行安装命令

原因4:网络不稳定

方法1

切换npm的下载源:npm config set registry https://registry.npm.taobao.org检查当前下载源:npm config get registry,如果结果是上面的这个淘宝源,就切换成功了再次执行安装命令

方法2

在安装命令后面加上--registry https://registry.npm.taobao.org

附上官方源地址: registry https://registry.npmjs.org/

原因5: 杀毒软件问题

方法1

关闭杀毒软件,然后再运行几次这个安装命令

方法2

找到该文件:[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js在其中查找以下内容:

if (process.platform === "win32") {

//或者是

if (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)

}

其他:待补充



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。