【问题标题】:Babel 6 react JSX transformer - disable strictBabel 6 react JSX 转换器 - 禁用严格
【发布时间】:2016-06-15 20:44:00
【问题描述】:

问题

我正在使用 babel 6 进行 React JSX 转换。但是我没有使用 react 预设,我只使用了“transform-react-jsx”插件(并尝试了严格模式禁用选项),这是我的 .babelrc

{
  "plugins": [
    ["transform-react-jsx"]
  ],
  "sourceMaps": true,
  "strictMode": false
}

但是,我需要使用“with”(不受我控制)的第三方 javascript,它会发出以下错误: [SyntaxError: foo.js: 'with' in strict mode .. ]

所以我需要禁用严格模式,这与this issue 的问题相同,但是我没有使用 es6/es2015 的东西,只有 jsx 转换。

babel 6 没有黑名单,我只指定了一个插件,所以我怀疑没有办法禁用。

【问题讨论】:

  • 如果这就是你的配置,Babel 不是插入use strict 的那个,它一定是别的东西。你确定这是你唯一的 Babel 配置吗?您没有在某处或某处传递一些作为参数吗?
  • @loganfsmyth 这是唯一的一个。我将尝试在命令行上重现,无需任何其他步骤
  • 如果有帮助,使用 reactify 转换可以正常工作。
  • 那么,我下地狱了
  • 如果该第三方脚本使用with,它显然不是为用作模块而设计的。将其从您的捆绑器构建中移除,并使用 <script> 标记特别请求它。

标签: javascript reactjs babeljs react-jsx


【解决方案1】:

根据this line,确实解析了strictMode选项。

不过,我不明白您用于.babelrc 的语法。为什么是数组?

试试这个:

{
  "plugins": [
    ["transform-react-jsx"]
  ],
  "sourceMaps": true,
  "strictMode": false
}

【讨论】:

  • 谢谢,我编辑了答案以反映您的反馈。但是还是不行
  • 有几个活动部分(webpack、不同项目中的 babel 等),所以我正在努力简化问题
【解决方案2】:

transform-strict-mode 仅用于包含严格模式而不是禁用它。因此将其设置为 false ["transform-strict-mode", {"strict": false}] 不会改变任何内容,在您的情况下,最好删除此插件,然后包含它。 但是,如果您在其他地方使用包含严格模式的插件或预设,请尝试使用es2015-loose:

  1. 安装

    npm install --save-dev babel-preset-es2015-loose babel-preset-es2015

  2. 配置

    {"presets": ["es2015-loose"]}

【讨论】:

  • 我没有使用其他插件或预设,只是 transform-react-jsx。我想它可能会引入其他东西。我会更新问题以反映我正在尝试的内容
猜你喜欢
  • 2016-08-30
  • 2018-12-27
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多