@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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM