【问题标题】:script1010: unidentified syntax | Not Able to convert ES6 to ES5 using Babel for IE11script1010:未识别的语法 |无法使用 Babel for IE11 将 ES6 转换为 ES5
【发布时间】:2019-01-16 14:09:48
【问题描述】:

在我的 Reactjs 代码中,我得到了

Script1010:语法不明。

这是因为 node_module/types.js 文件夹中的 types.min.js 文件。

在 types.min.js 文件中; o=function(...n) 代码由于 ES6 语法而出错。当我使用 Gulp 构建代码时,它没有将 ES6 转换为 ES5,所以 IE11 会抛出错误。我正在使用 babel-polyfill。

所以任何线索为什么它不转换.???

当我将 types.js 代码转换为 ES5 格式并将其粘贴到 types.min.js 文件时,它可以正常工作。但这不是正确的方法。

ma​​in.js

// polyfills
   import 'classlist-polyfill';
   import 'element-closest';
   import objectFitImages from 'object-fit-images';
   import picturefill from 'picturefill';
   import 'masonry-layout/dist/masonry.pkgd';
   import 'imagesloaded/imagesloaded.pkgd';

babelrc

{
  "presets": ["env","es2015", "react"],
  "plugins": [
    "transform-object-rest-spread",
    "transform-class-properties"]
}

【问题讨论】:

  • 什么是types.js
  • 在大多数资产构建堆栈中,node_modules 文件夹免于编译。 node_modules / npm 包预计只提供 ES5 内容,但有些不遵循这一点。

标签: reactjs ecmascript-6 internet-explorer-11 babeljs babel-polyfill


【解决方案1】:

如果您将https://raw.githubusercontent.com/phazelift/types.js/master/types.min.js 复制到IE 11 控制台并运行它,您会看到从node_modules/types.js 获得的代码与IE 11 不兼容。

因为在大多数构建堆栈配置中,来自node_modules 文件夹的模块都免于使用 Babel 进行编译,因此最简单的解决方法是将它们的代码复制到您自己的 JS 代码所在的项目文件夹中。从那里导入它可以确保你的 Babel 转换代码。

【讨论】:

  • 是的,它奏效了。我发现我在 webpack.config 文件中排除了 babel-loader 的 node_module 。我刚刚删除了它并且它工作正常。但不知道它是否会产生任何性能影响。谢谢
  • 删除排除选项不是一个好主意,不仅仅是出于性能原因。我宁愿将文件复制到默认情况下将被转译的文件夹中。
  • 但是从 node_module 复制并将其保存在我的文件中会在我更改工作空间或其他人从 repo 签出代码时产生困难。所以我想让它自动化或排除 node_module 并且只包括 webpack.config 中的 types.js 文件夹
猜你喜欢
  • 2017-08-07
  • 2019-03-21
  • 2019-09-24
  • 2020-05-29
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
相关资源
最近更新 更多