记录一次nrm的报错

433 阅读1分钟

nrm(npm registry manager )是npm的镜像源管理工具,平时开发的时候需要在公司内网仓库和taobao仓库做切换,这次使用的时候出现一个报错,记录一下解决的思路

全局安装

nrm i -g nrm

查看nrm源

nrm ls

报错

结果控制台报以下错误

Error: Cannot find module 'C:\Users\用户\AppData\Roaming\npm\node_modules\nrm\node_modules\npm\index.js'

排错

到对应的目录下确实没有index.js这个文件,查看该目录下的package.json的main属性,如图:

image.png

由此我们可以得到结论:这个npm依赖有问题。我们接着往下看其他的错误提示

C:\Users\用户\AppData\Roaming\npm\node_modules\nrm\cli.js:6:13

可以定位到cli.js这个文件的第六行代码,如下:

const npm = require('npm');

同样作证了npm依赖可能存在问题,查看package.json版本,如图:

image.png

我们去github上查看下npm的最新版本

image.png

意思是官方在v8版本移除了对require('npm')的支持

解决

我们可以尝试一下降低npm的版本,修改C:\Users\用户\AppData\Roaming\npm\node_modules\nrm目录下package.json文件(我降到了6.14.13这个版本区间)

image.png

在该目录下运行npm i,完成后执行nrm ls,成功!

image.png