@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