Babel 不会为 IE11 转换 Javascript 默认值参数

Posted

技术标签:

【中文标题】Babel 不会为 IE11 转换 Javascript 默认值参数【英文标题】:Babel will not transpile Javascript default value parameters for IE11 【发布时间】:2020-11-19 14:33:57 【问题描述】:

我的 javascript 文件

require('core-js');

const dzsHelpers = require('./js_common/_dzs_helpers');
const dzsapHelpers = require('./jsinc/_dzsap_helpers'); <-- THE CODE IS HERE
const dzsapComments = require('./jsinc/components/_comments'); [ ... ]

我的 webpack

测试:middleExtensionRegex, 排除:/(node_modules|bower_components)/, 加载器:“通天塔加载器”, 选项: 来源地图:是的, 缩小:真实, sourceType:“明确”, 预设:[ ['@babel/preset-env', useBuiltIns: '入口', corejs:版本:3, 调试:是的, forceAllTransforms:真, 松散的:真实的, “forceAllTransforms”:是的, “目标”: “铬”:“58”, “即”:“11” ] ], “插件”:[ ["@babel/plugin-transform-parameters", ], ["@babel/plugin-transform-arrow-functions"], [ "@babel/transform-runtime", “再生器”:真 , ] ], 忽略:['node_modules'] , // 加载器的选项

这可以满足我的需要 - https://babeljs.io/docs/en/babel-plugin-transform-parameters - 在纸上... 但是,输出总是这样 function(elThis,defaultOptions,argOptions=null,searchedAttr="data-options")var finalOptio [...]

而IE11自然会抱怨……

我做错了什么?

【问题讨论】:

为什么"forceAllTransforms": true 被列出了两次? 没关系 所有尝试都是徒劳的,唯一的解决办法是使用闭包编译器 【参考方案1】:

所有使用 babel 预设 env 目标浏览器 ie11 的尝试都是徒劳的。

唯一对我有用的解决方案是使用 Closure Compiler (webpack 5):

  optimization: 
    minimizer: [
      new ClosurePlugin(mode: 'STANDARD', 
        debug: true,
        languageOut: 'ECMASCRIPT5',
        renaming: false
      )
    ]
  ,

【讨论】:

以上是关于Babel 不会为 IE11 转换 Javascript 默认值参数的主要内容,如果未能解决你的问题,请参考以下文章

webpack babel在IE 11之前

如何使用 babel-loader 转换 node_modules 模块?

IE浏览器对ES6不兼容的问题(语法错误Promise未定义Symbol未定义)

为啥 Babel 不为 IE11 提供 URLSearchParams polyfill

Vue兼容ie9+

使用 babel 和 webpack 转换代码时,导出默认值不会被转换