记录一次更新npm i之后,原来兼容IE的程序,又报语法错误,app.js包语法错误: “exports.destroy = (() => { ... }); const let”等未被转义

最近开发项目中,项目重新npm install之后,IE浏览器报了语法错误,但是之前是好的,查看报错的位置发现有好多箭头函数和const 没有被转义,但是babel配置都是问问题的。

app.js

/**
 * This is the web browser implementation of `debug()`.
 */
//...
exports.destroy = (() => {
	let warned = false;

	return () => {
		if (!warned) {
			warned = true;
			console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
		}
	};
})();

//...
const c = 'color: ' + this.color;

于是找了使用相同项目模板正常兼容IE的项目,对比了依赖包的版本发现一个隐藏很深的依赖包导致了这个问题:
‘@vue/cli-service’ —>‘webpack-dev-server’ —> ‘sockjs-client’!

运行npm ls sockjs-client,查看是什么包依赖了它
正常的项目

在这里插入图片描述

ES6语法没有被转义的
在这里插入图片描述

webpack-dev-server中默认会下载最近的1.x.x的sockjs-client.js,而1.6.1的版本在我的项目中,无法被转义,导致了更新依赖包后,再编译app.js中存在ES6语法,最终导致IE中报错。
在这里插入图片描述

解决方案:
package.json,协议sockjs-client: 1.5.2, 重新npm install
记录一次更新npm i之后,原来兼容IE的程序,又报语法错误,app.js包语法错误: “exports.destroy = (() => { ... }); const let”等未被转义_第1张图片
这个问题真的很坑,谷歌百度了很久都没有找到同样问题的。
记录一下,希望帮助到遇到相同问题的人。

你可能感兴趣的:(bug解决记录,javascript,npm,webpack)