为什么设置browserslist后Babel没按预期转译代码?
我在项目根目录的.browserslistrc里写了"chrome 90",但打包后代码里箭头函数没被转译。明明装了@babel/preset-env,还按网上的教程在.babelrc里配了useBuiltIns和corejs,为什么还是没效果?
尝试过删除node_modules和.lock文件重装依赖,但问题依旧。查看构建日志发现有警告:<code>Module not found: Error: Can't resolve 'core-js/stable'</code>。难道是依赖版本冲突?我的package.json里core-js版本是3.25.0,配置文件都检查了好几遍没发现问题…
// .browserslistrc
[
"chrome 90"
]
// package.json
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/preset-env": "^7.20.2"
}
1. **core-js 没正确安装**:你装了 core-js 但看起来没有正确引用。你得运行
npm install core-js@3 --save确保它在 dependencies 里,不是只在 devDependencies。2. **Babel 配置缺失或错误**:虽然你提到了 useBuiltIns 和 corejs,但没有贴出 .babelrc 的配置,这里很容易出错。你应该这样配:
3. **Babel 没有正确处理你的代码**:确认一下你的构建工具(Webpack/Vite 等)是否正确地调用了 Babel。比如 Webpack 中需要配置 rule 来使用 babel-loader,并且排除 node_modules。
4. **browserslist 格式问题**:你在 .browserslistrc 里用了 JSON 格式,但这个文件是纯文本的,不需要用数组格式。直接写:
5. **清除缓存**:虽然你说删除了 node_modules 和 lock 文件,但有时候还需要手动清一下构建工具的缓存目录,比如 Webpack 的 cache 目录或者 .vite 等等。
你可以先按照上面几点检查,尤其是 core-js 的安装和 Babel 配置。如果还是不行,贴一下 .babelrc 的内容我再帮你看看。希望能帮到你!