rollup 中使用 @babel/polyfill

背景:
使用rollup打包器,在入口文件中使用了es6 new Set(), 结果在ie11一下版本 报错
在这里插入图片描述

但是 rollup 中 我现在已经使用了 rollup-plugin-node插件,在ie中仍然报错。

后来查到Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局对象,以及一些定义在全局对象上的方法(比如Object.assign)都不会转码。

需要使用babel -polyfill 解决这个问题,为当前环境提供一个垫片。

重点来了

我们首先 安装 babel/polyfill

  • 在终端执行 npm install --save @babel/polyfill (注意不能是开发版本的依赖)
  • 在项目入口文件 引入,require或者import都可以,我用的es6的模块,所以我用的后者 。
    注意一定要在入口文件的最顶部使用
import '@babel/polyfill'

这个是安装完babel相关依赖包的位置在这里插入图片描述

  • 接下来是进行配置,在rollup中我们要在rollup.config.js中进行配置(webpack中是在.babelrl中配置)
babel({
      exclude: 'node_modules/**',
      presets: [
        [
          '@babel/env',
          {
            modules: 'false',
            targets: {
              browsers: '> 1%, IE 11, not op_mini all, not dead',
              node: 8
            },
            useBuiltIns: 'usage'
          }
        ]
      ]
    })

接下来 再进行打包,ie预览,就没有报错了。

@rollup/plugin-dynamic-import-vars 是一个 Rollup 插件,用于处理动态导入(Dynamic Import)语法的变量部分。 在 ES 模块,我们可以使用动态导入语法来动态加载模块。而 @rollup/plugin-dynamic-import-vars 插件则是为了解决在动态导入语法使用变量引用的问题。 当我们在动态导入语法使用变量时,Rollup 默认会将该变量视为一个字符串,而不是实际的变量引用。这样就无法准确地确定被导入模块的路径。例如: ```javascript const modulePath = './path/to/module.js'; import(modulePath).then(module => { // ... }); ``` 在上述代码,modulePath 是一个变量,它存储了被导入模块的路径。然而,默认情况下,Rollup 会将该变量视为字符串,导致无法正确解析模块路径。 @rollup/plugin-dynamic-import-vars 插件的作用就是在构建过程解析这些变量引用,并将其正确地转换为模块路径。通过该插件,我们可以顺利地将动态导入的模块正确地导入并使用。 需要注意的是,使用该插件时,我们需要保证变量引用是由静态可确定的值构成,如果变量引用是动态的、不可确定的,则插件无法正确处理。因此,在使用该插件时,我们需要遵循一定的限制,以确保构建过程的准确性和稳定性。 总之,@rollup/plugin-dynamic-import-vars 是一个用于处理动态导入语法变量引用的 Rollup 插件,可以解决默认情况下变量引用视为字符串的问题,确保动态导入模块的正确构建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值