即使使用babel env预设的safari> = 7,仍然在捆绑中

时间:2018-02-22 22:50:49

标签: javascript webpack babel

我有一个客户,其员工在较旧的iPad上工作,他们无法将他们的Safari版本更新为10.x +,因此他们已经卡住了safari 9.x.当我尝试在iPad上的Safari 9.x中加载我的浏览器应用程序时,我一直收到以下错误:

SyntaxError: Unexpected keyword 'const'. Const declarations are not supported in strict mode.

我在我的webpack配置中使用babel-loader,并且我在装载程序的options属性中设置了以下babel选项:



{
  presets: [
    [
      "env",
      {
        targets: {
          browsers: ["last 3 versions", "safari >= 8"]
        },
        debug: true
      }
    ],
    // `es2015`,
    `stage-1`
  ],
  retainLines: true,
  plugins: [
    "syntax-jsx",
    "transform-react-jsx",
    "transform-react-display-name",
    "transform-react-require",
    "transform-es2015-destructuring",
    "transform-es2015-parameters",
    "transform-object-rest-spread",
    "transform-class-properties",
    // "check-es2015-constants",
    // "transform-es2015-block-scoping",
    ["transform-runtime", {
      "polyfill": false,
      "regenerator": true
    }]
  ]
}




在我的控制台中,当我进行构建时,它甚至出现了:

Using targets:
{
  "chrome": "59",
  "android": "4.4",
  "edge": "13",
  "firefox": "54",
  "ie": "9",
  "ios": "10",
  "safari": "8"
}

Using plugins:
  check-es2015-constants {"android":"4.4","edge":"13","ie":"9","safari":"8"}
  transform-es2015-block-scoping {"android":"4.4","edge":"13","ie":"9","safari":"8"}

但是在我的捆绑包中仍有STILL const声明(确切地说是65)。不,它们不是所有node_module个导入......大多数都是我自己的React组件文件。

如何让babel只替换const w / var的所有实例?

我在webpack 3.7.1和babel-loader 7.1.2和babel-core 6.26

1 个答案:

答案 0 :(得分:0)

结果我仍在使用此项目的Webpack别名:https://github.com/njl07/rx-http-request/issues/15#issue-273561398

显然,出于某种原因,babel转换不适用于别名。

更新到最新的套餐,现在一切都很好。