运行vue-cli搭建的老项目,安装依赖发现跑不起来了,一看是原先的?.和??语法报错Module parse failed: Unexpected token
先说去github找到的解决方案
vue-cli根目录有.browserslistrc
文件,在其末尾添加一行IE 11
去github找到的原因
https://github.com/vuejs/vue-cli/issues/7209
这是因为 browserslist 前两天发布的新版本 4.21 里把 IE 11 列入了 dead 名单 https://github.com/browserslist/browserslist/blob/4.21.0/CHANGELOG.md#421
所以默认的 “not dead” 条件会把它排除在外。
而不包含 IE 11 的、满足 “> 1%, not dead, last 2 versions” 的所有浏览器,都支持最新的语法标准,所以 @babel/preset-env 不再需要转译 ??。
至于这个 issue 里出现的报错,则是因为项目的依赖版本比较老,除了 Babel 以外,其他的工具比如 webpack 4 是不支持新语法的,所以如果 Babel 不再把代码转换好再输出给它们,它们就会报无法解析的错误。