zoukankan      html  css  js  c++  java
  • @babel/preset-env 解决Promise被Babel编译成regenerator 运行时错误问题

    "useBuiltIns"

    默认为false, 不为每个文件自动添加polyfill,也不要进行转换import "core-js"或import "@babel/polyfill"更改为单个polyfill。

    "usage": 按需导入填充物

    填充物主要来自core-jsregenerator-runtime等开源项目.

    "useBuiltIns": "usage"
    

    填充物示例如下(babel转译后源码):

    require("core-js/modules/es6.object.define-property");
    require("regenerator-runtime/runtime");
    require("core-js/modules/es6.promise");
    require("core-js/modules/es6.object.to-string");
    

    "entry": 从全局使用填充物

    entry代表填充物在入口js文件中填充到全局空间中, 不需要为每个js文件导入填充物.
    因此常发生ReferenceError:

    ReferenceError: regeneratorRuntime is not defined
        at _foo2 (/home/githmb/babel/b.js:49:43)
        at foo (/home/githmb/babel/b.js:45:16)
        at main (/home/githmb/babel/b.js:13:3)
    

    targets.esmodules

    现代浏览器其实不需要填充:

    {
      "presets": [
        [
          "@babel/preset-env",
          {
            "modules": "commonjs",
            "useBuiltIns": false,
            "targets": {
              "esmodules": true
            }
          }
        ],
        "@babel/typescript"
      ]
    }
    

    END

  • 相关阅读:
    校验规则,纯数字。几位有效数字,保留几位小数
    银行卡校验规则(Luhn算法)
    forEach兼容ie8
    node.js
    gulp
    observer
    webpack.config.js 配置
    内存泄漏(Memory Leak)
    cdn
    前端 各种插件的官网
  • 原文地址:https://www.cnblogs.com/develon/p/13977929.html
Copyright © 2011-2022 走看看