SCRIPT1002:使用 React + Babel + Webpack 时 IE11 中的语法错误

2023-11-24

我正在尝试使用 Webpack + Babel 在 IE >= 11 中运行具有 ES2015 功能的 React 应用程序。该设置是自定义的,使用inferno-compat层,所以没有create-react-app在这里使用。

然而 - 尽管应用了最新的babel-polyfill and babel-preset-env实践到我的.babelrc和 webpack 配置,我仍然得到SCRIPT1002:语法错误当尝试使用 IE11 访问应用程序时,在我的bundle.js 中。

当我遵循 IE 控制台中的语法错误参考时,这是生成的bundle.js 中存在冲突的部分(特别是箭头函数):

function add(x, y) {
  if (y === undefined) {
    return yHolder => add(x, yHolder);
  }

  return x + y;
}

这些是我的相关依赖项package.json:

"dependencies": {
  "inferno-redux": "^3.10.1",
  "react": "^15.6.0",
  "react-dom": "^15.6.0",
  "react-ga": "^2.2.0",
  "react-swipeable": "^4.1.0",
  "redux": "^3.7.2",
  "redux-saga": "^0.16.0",
  "regenerator-runtime": "^0.11.0"
},
"devDependencies": {
  //... stuff

  "babel-cli": "^6.26.0",
  "babel-core": "^6.25.0",
  "babel-eslint": "^7.2.3",
  "babel-loader": "^7.1.1",
  "babel-plugin-inferno": "^3.2.0",
  "babel-plugin-module-resolver": "^2.7.1",
  "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
  "babel-plugin-transform-es2015-spread": "^6.22.0",
  "babel-plugin-transform-regenerator": "^6.26.0",
  "babel-plugin-transform-runtime": "^6.23.0",
  "babel-polyfill": "^6.26.0",
  "babel-preset-env": "^1.6.1",
  "babel-preset-es2015": "^6.24.1",
  "babel-preset-flow": "^6.23.0",
  "babel-preset-react": "^6.24.1",

  //... some more stuff

  "webpack": "^3.8.1",
  "webpack-bundle-analyzer": "^2.9.1",
  "webpack-dev-middleware": "^1.12.2",
  "webpack-dev-server": "^2.9.5",
  "webpack-manifest-plugin": "^1.3.2",
  "webpack-merge": "^4.1.1",
}

这是我的.babelrc:

{
  "presets": 
    [
    "react", 
    "flow",
    "es2015",
    [
      "env", { 
        "modules": "commonjs",
        "targets": {
          "browsers": ["last 2 versions", "ie >= 11"]
        }
      }
    ]
  ]
}

我包括babel-polyfill在我的内webpack.base.config.js here:

// ... stuff
entry: {
  index: ['babel-polyfill', './index.js'],
},
// ... more stuff

有什么想法让它在 IE11 中运行吗?


我发现了这个问题。我正在使用该模块rambdax作为我的 devDependency 之一,其中包含以 ES6 语法编写的源代码(未转换为 ES5) - 更具体地说是箭头函数=>直接包含在我的bundle.js 中。 IE11 当然无法执行箭头函数或任何其他 ES6 语法。

不幸的是,Babel 和 Webpack(UglifyJS 插件)在编译 bundle.js 时都不会触及导入的 node_modules 的源代码,这意味着:作为 ES6 导入的模块源代码将在您的 webpack 中保留 ES6bundle.js.

See https://github.com/facebookincubator/create-react-app/issues/1125有关此主题的更多信息。

我也已经在“rambdax”存储库中提交了有关此问题的问题。您可以在那里找到更多相关信息:https://github.com/selfrefactor/rambdax/issues/4

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SCRIPT1002:使用 React + Babel + Webpack 时 IE11 中的语法错误 的相关文章

随机推荐

  • VS2010 - WinForms - DataGridView - 绑定到数据集

    我是 winforms 的新手 我在表控件中有一个 datagridview 我正在尝试绑定它来显示数据 DataSet dataSet new DataSet DataTable dataTable dataSet Tables Add
  • 如何使用 tkinter filedialog.askopenfilename 方法避免文件选择器中隐藏文件?

    我想允许用户从文件管理器中选择 CSV 文件 但它也显示了所有隐藏文件夹 这是非常不合适的 如何避免隐藏文件夹 def importCSV self self file filedialog askopenfilename initiald
  • SQL Server 中表变量可以拥有的最大记录数

    是否有任何约束来限制表变量中可以拥有的记录数量 如果是 表变量可以容纳的最大记录数是多少 我必须编写一个存储过程来处理大约 1000 条记录 我需要使用表变量或临时表吗 因此 MSDN 官方网站SQL Server 的最大容量规格表变量没有
  • 如何在 iOS 10 中安装自签名证书

    Apple 似乎在 iOS 10 中删除了信任自签名 SSL 证书的功能 我创建了自己的自签名证书 并拥有一个使用我的证书签名的本地 Web 服务器 我必须在 iOS 中安装我的证书才能在本地进行测试 因为我开发了一个需要信任我的证书的 i
  • 增强的 for 循环不适用于将值分配给数组(Java)[重复]

    这个问题在这里已经有答案了 我不明白为什么我不能使用增强的 for 循环为数组的元素赋值 例如 像这样使用 for 循环 int array new int 5 for int i 0 i lt 5 i array i 10 产生我想要的东
  • 用GD创建一张包含其他图像的图片

    我想用PHP用GD创建一张由不同的其他图片组成的图片 例如 我有 6 张 或更多 图片 我想创建一张包含这些不同图片的图片 困难在于我的最终图片必须具有固定的宽度和高度 304x179 因此如果不同的图片太大 则必须将其剪切 这是来自 Ic
  • 如何使用 Ruby 从 CSV 中删除行

    给定以下 CSV 文件 如何删除 foo 列中包含单词 true 的所有行 Date foo bar 2014 10 31 true derp 2014 10 31 false derp 我有一个可行的解决方案 但它需要创建一个辅助 CSV
  • MySQL Inner Join with LIMIT 到左表

    我有这个数据库查询 SELECT FROM metadata im INNER JOIN content ic ON im rev id ic rev id WHERE im id 00039 AND current revision 1
  • 为什么“自动”和显式引用变量声明的行为不同?

    我有这样的事情 class Bar class Foo public Foo bar new Bar Bar GetBar return bar get private std unique ptr
  • 静态字段在内部到底是如何工作的? [复制]

    这个问题在这里已经有答案了 说你有课 class Foo public static bar 当你说 new Foo 我可以想象 在内存中 为这个对象保留了一个空间 当你再次说 new Foo 现在您有了另一个可用于该对象的空间 然而 静电
  • URL 目录部分的有效字符(对于短链接)

    除了 A Za z0 9 之外还有其他字符可以用来缩短链接而不会遇到麻烦吗 我在想 什么的 对于浏览器供应商所遵守的 URL 中可以使用哪些字符 是否存在明确的标准 A 路径段 路径中的部分由 绝对 URI 路径中可以包含零个或多个pcha
  • Flexbox - 以 2 件为一组包装物品

    有一个简短的问题要问熟悉 Flexbox 的人 我有一排 4 个弹性项目 我希望在第一个断点处做到这一点 max width 1024px 它们包装成 2 列 每列 2 列 我想我也许可以使用 Flex 容器内每个项目的宽度的 值来实现这一
  • linux下如何制作透明窗口

    我想让应用程序成为 Linux 上带有启动屏幕的应用程序 我想使用 X11 和 glx OpenGL 应用程序 我找到了一种方法来删除窗口周围的边框 但我找不到如何使其透明 我怎样才能做到这一点 这是我问题的真正答案 A demonstra
  • ASP.NET Mvc Api:设置 cookie,然后 302/303 重定向会丢失 cookie

    我有一个返回 HttpResponseMessage 的 API 操作 API地址如下 http localhost login authcode xxx API 操作执行一些登录身份验证并将用户重定向到注册或欢迎页面 代码如下 var r
  • JSON 文件的 Mongoimport

    我有一个包含大约 2000 条记录的 JSON 文件 与 mongo 数据库中的文档相对应的每条记录的格式如下 jobID 2597401 account XXXXX user YYYYY pkgT pgi 7 2 5 libA libpg
  • 每个对象的 Groovy 动态属性

    使用 Groovy 1 8 我正在尝试创建一个动态类定义 它将缓存每个对象的属性 我确实用过propertyMissing无需将属性添加到对象就好了 我只是认为缓存属性会更有效 正确的 请注意 每个实例必须有自己不同的属性 下面的代码工作正
  • 在 angularjs 中将表单设置为无效

    我需要在开始时将 ng form 设置为无效 因为它是向导的后续部分 该表单包含一个包含元素的网格 每个元素都有自己的验证 但问题是 当没有元素时 表单显示为有效 当行数为 0 时 我需要将其标记为起始情况无效 如何做到这一点 经过一些研究
  • Azure:通过 ARM 模板将角色分配给存储容器

    我试图通过arm模板将 存储Blob数据贡献者 预览 角色分配给特定的存储容器 但我就是无法弄清楚正确的语法 这就是我所拥有的 schema https schema management azure com schemas 2015 01
  • 如何使用 XPath 查找一组元素中属性的最小值?

    如果我有这样的 XML
  • SCRIPT1002:使用 React + Babel + Webpack 时 IE11 中的语法错误

    我正在尝试使用 Webpack Babel 在 IE gt 11 中运行具有 ES2015 功能的 React 应用程序 该设置是自定义的 使用inferno compat层 所以没有create react app在这里使用 然而 尽管应