转换-内置-扩展似乎不起作用

transform-builtin-extend seems does not working

本文关键字:不起作用 扩展 内置 转换      更新时间:2023-09-26

我有一个错误的翻译类:

Uncaught TypeError: Failed to construct 'FormData': Please use the 'new' operator, this DOM object constructor cannot be called as a function.
at Form.ExtendableBuiltin (http://local.yandex.ru:30002/bundle.js:79395:14)
at new Form (http://local.yandex.ru:30002/bundle.js:79422:103)
我.babelrc

:

{
    "presets": ["react", "latest"],
    "plugins": [
        "babel-plugin-syntax-decorators",
        "babel-plugin-transform-decorators-legacy",
        ["babel-plugin-transform-builtin-extend", { // Class Extending Natives
            globals: ["FormData"],
            approximate: true
        }],
        "transform-es2015-arrow-functions",
        // "syntax-async-functions",
        // "transform-async-to-generator",
        // "transform-regenerator",
        "transform-object-rest-spread",
        "transform-rebem-jsx",
        "transform-es2015-typeof-symbol"
    ],
}

我的类:

import map from 'lodash/map'
export default class Form extends FormData {
    constructor (data) {
        super()
        map(data, (val, key) => this.append(key, val))
    }
}

一段编译代码:

function _extendableBuiltin(cls) {
    function ExtendableBuiltin() {
        cls.apply(this, arguments);
    }

式中clsFormData

期待这样的事情:

function _extendableBuiltin(cls) {
    return function ExtendableBuiltin() {
        return new cls(arguments);
    }

巴别塔——版本6.14.0 (babel-core 6.14.0)

webpack——版本版本号:webpack 1.13.2

我做错了什么?

必须将approximate选项设置为false。从GitHub插件库:

在不支持重新分配现有对象原型的旧浏览器上,您将需要启用近似模式,这将回到Babel 5行为,使用简单的ES5继承来扩展approximate类,尽管您的结果可能取决于您的目标。