我目前看到同样的情况,正在寻找解决方案。这是我目前发现的,可能会有所帮助。
在我们的例子中,我们使用 babel 转译我们的代码,并且查看 babel 生成的代码,我们可以看到生成器正在为 @babel/preset-env 读取的 browerslist 所针对的浏览器进行转译。因此,作为初始测试,我们从开发版本中删除了@babel/preset-env,并在 Chrome 70 中进行了本地测试。生成器不再被转译,我们可以在 VSCode 中成功设置断点。
因此,对我们而言,解决方案是不为开发版本转译,而是为我们的目标浏览器转译以用于生产版本。
作为参考,这里是我们用来测试这个解决方案的 babel 配置:
module.exports = {
presets: [
'@babel/preset-react'
],
plugins: [
[
'@babel/plugin-proposal-object-rest-spread',
{
useBuiltIns: true
}
],
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-modules-commonjs'
],
env: {
production: {
presets: [
[
'@babel/preset-env',
{
debug: false,
useBuiltIns: 'usage'
}
]
],
plugins: [
'@babel/plugin-transform-runtime'
]
}
}
}
我们可以在任何我们想要针对我们支持的浏览器的生产 npm 脚本中设置BABEL_ENV=production。
{
"name": "testapp-ui",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "rm -rf dist && mkdir dist && NODE_ENV=production BABEL_ENV=production npm run build:webpack",
"build:dev": "rm -rf dist && mkdir dist && NODE_ENV=development npm run build:webpack",
"build:webpack": "webpack --progress --debug",
...