解决VueCli因为EnumerateProviders创建新项目失败问题

519 阅读1分钟

在公司电脑运行node或python写的程序时,会出现下面这些烦人的东西(不知道这是什么,如果有知道的好心告诉我一下):

EnumerateProviders catalog=0
EnumerateProviders totalPro=19

上面输出的这些东西,会在vuecli设置yarn registry url或npm registry url时,错误的拼接到地址中,导致依赖安装失败。

查看源码发现,vuecli使用exca这个包来实现命令的运行,在这个包中又会使用strip-eof来处理执行命令行后stdout的数据。

修改strip-eof中的index.js文件,修改为以下代码,可以修复这个问题:

'use strict';
module.exports = function (x) {
	var catalog_pattern = /EnumerateProviders (catalog|totalPro)=\d+/g;
	x = x.replace(catalog_pattern, "").trim()

	var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt();
	var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt();
	
	if (x[x.length - 1] === lf) {
		x = x.slice(0, x.length - 1);
	}

	if (x[x.length - 1] === cr) {
		x = x.slice(0, x.length - 1);
	}

	return x;
};

希望有好心人, 能告诉我这个东西他是干嘛的。