OSX下损坏的npm全局死链接无法删除,致npm outdated无法运行求助
解决OSX下npm link残留无效链接导致的报错问题
我之前也碰到过一模一样的糟心情况——没先执行npm unlink就删了本地包,结果全局的npm链接变成了"死链接",搞得npm ls -g报错不说,连npm outdated都跑不了。别慌,按下面的步骤来就能搞定:
第一步:手动删除无效的全局软链接
报错信息里已经明确给出了无效链接的路径:/usr/local/lib/node_modules/package-test,直接用rm命令删掉它就行。如果遇到权限不足的提示,记得加sudo:sudo rm -rf /usr/local/lib/node_modules/package-test注意把
package-test替换成你自己那个出问题的包名哦。第二步:清理npm缓存(可选但更保险)
有时候npm缓存里可能残留着旧的包信息,执行下面的命令彻底清理一下:npm cache clean --force要是你用的是npm 6及以上版本,也可以用更安全的缓存验证命令:
npm cache verify第三步:验证问题是否解决
现在再跑一遍npm ls -g,如果没有再抛出ENOENT错误,接着试试npm outdated,应该就能正常运行了。
为啥会出现这个问题?
npm link本质是在全局node_modules目录下创建一个软链接,指向你本地开发的包目录。当你没先unlink就直接删掉本地包时,全局的软链接还留在原地,但它指向的路径已经不存在了,npm扫描全局包时自然会抛出"找不到文件"的错误。
内容的提问来源于stack exchange,提问作者maxwondercorn
相关产品推荐
相关产品推荐

