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

  • 相关阅读:
    异常定义-Mybatis中的源码参考
    前置机介绍说明
    MyBatis源码解析(一)
    Mybatis思
    石杉的架构笔记(一)
    nacos启动
    JVM图解
    二叉搜索树的第K大节点
    第一个只出现一次的字符
    表示数值的字符串
  • 原文地址:https://www.cnblogs.com/develon/p/13977929.html
Copyright © 2011-2022 走看看