1、问题描述:
在 node 中安装好了 ‘nrm’ 却发现在执行命令后,
抛错:‘nrm throw new ERR_INVALID_ARG_TYPE(name, ‘string’, value);’,
该文章目的就是要找到该错误的原因以及解决该错误;
2、问题展示:
首先,在 cmd 命令行中运行命令 ‘nrm ls’,其会抛错;
即使是查看是否存在 vrm 的命令:‘nrm -V’ (注意:是大写的 ‘V’),也是抛出下述错误;
‘nrm throw new ERR_INVALID_ARG_TYPE(name, ‘string’, value);’;
3、问题分析:
经过一系列的查询和操作,终于找到了问题所在,可能是因为版本不合适的原因;
4、解决的问题方法:
其一、查看 ‘npm’ 的配置:输入命令 ‘npm config ls’; 结果如下:若在 ‘user-agent’ 中显示的也是 ‘win32 x64’,那么我们的问题可能是相同的;
其二、找到安装 ‘nrm\cli.js’ 的文件:
在抛错的信息中找到:‘at Object.()’ 中的地址,我的是在:
‘C:\Users\dell\AppData\Roaming\npm\node_modules\nrm\cli.js’;
其三、打开该 ‘cli.js’ 文件;
(建议用能打开并修改的能访问 ‘.js’ 文件的工具打开),我用的是 VSCode;
打开发现该代码块:
const NRMRC = path.join(process.env.HOME, '.nrmrc');
修改为:
const NRMRC = path.join(process.env.USERPROFILE, '.nrmrc');
该操作就完成了;
下述是我用 浏览器 和 VSCode 工具分别打开和修改 ‘cli.js’ 后的结果展示;
其四、分别在 ‘Windows PowerShell’ 和 ‘cmd’ 中进行测试;
测试命令为:‘nrm ls’;
若返回的结果是如下结果就说明其解决了问题;
其五、在 cmd 中查看 nrm 版本也是没有问题的;
输入命令:‘nrm -V’(注意是大写的);
5、小结:
哪里有不对或不合适的地方,还请大佬们多多指点和交流!