无法使用ES6 / babel-node进行子类化

ken

我有以下文件:gist

所述index.js尝试实例化一个基地“验证”类,但在它的构造在auth类作为对象工厂和传递回验证的子类来代替。

'use strict';
import Auth from './Auth';

let o = new Auth({type:'Oauth1'});
console.log(o);
o.getToken();

Auth.js类的定义如下:

'use strict';
import Oauth1 from './Oauth1';

export default class Auth {
    constructor(config) {
        if (this instanceof Auth) {
            return new Oauth1(config);
        } else {
            this.config = config;
        }
    }

    getToken() {
        console.log('Error: the getToken module must be implemented in the subclass');
    }
}

Oauth1.js类定义是:

'use strict';
import Auth from './Auth';

export default class Oauth1 extends Auth {
    getToken() {
        console.log('Auth: ', Auth);
    }
}

babel-node index.js我一起运行时,出现以下错误:

TypeError:超级表达式必须为null或函数,且未定义

at _inherits (/repos/mine/test-app/Oauth1.js:1:14)
at /repos/mine/test-app/Oauth1.js:4:28
at Object.<anonymous> (/repos/mine/test-app/Oauth1.js:4:28)
at Module._compile (module.js:434:26)
at normalLoader (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:199:5)
at Object.require.extensions.(anonymous function) [as .js] (/usr/local/lib/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:216:7)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)

如果我extends从Oauth1类中删除该表达式,它将执行,但是我没有得到想要的继承。

列昂尼德·贝沙斯特尼(Leonid Beschastny)

您的问题与无关babel真正的问题是您的代码中循环依赖项

要解决此问题,您应该Oauth1从其父Auth类中删除依赖项:

'use strict';
export default class Auth {
    constructor(config) {
        this.config = config;
    }

    getToken() {
        console.log('Error: the getToken module must be implemented in the subclass');
    }
}
'use strict';
import Auth from './Auth';

export default class Oauth1 extends Auth {
    getToken() {
        console.log('Auth: ', Auth);
    }
}

如果你不想删除this instanceof Auth从你的基类的检查,你可以requireOauth1在运行时的子类,而不是模块初始化期间将其导入:

constructor(config) {
    if (this instanceof Auth) {
        let Oauth1 = require('./Oauth1');
        return new Oauth1(config);
    }
    this.config = config;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未使用Node + ES6 + Babel定义的类方法

来自分类Dev

如何在Ember CLI中使用ES6语法对Ember类进行子类化

来自分类Dev

如何在Ember CLI中使用ES6语法对Ember类进行子类化

来自分类Dev

解析-使用Swift进行子类化?

来自分类Dev

使用ES6导出课程(Babel)

来自分类Dev

如何使用Node JS设置Babel 6以在服务器端代码中使用ES6?

来自分类Dev

使用Babel编译Node / Express以进行生产

来自分类Dev

如何使用ES6语法导入firebase-functions和firebase-admin以使用Babel进行Node 10的编译

来自分类Dev

babel-node es6“ REPL不支持模块”

来自分类Dev

如何快速学习jslib?React.js,AngularJS,Node,ES6,Babel

来自分类Dev

如何首先使用EF数据库进行子类化

来自分类Dev

如何使用非可选属性对UITableViewController进行子类化

来自分类Dev

使用输入参数崩溃在Swift中对CIFilter进行子类化

来自分类Dev

如何避免使用合成对Pandas DataFrame进行子类化?

来自分类Dev

如何首先使用EF数据库进行子类化

来自分类Dev

使用ES6 / Babel语法的systemJS相对动态加载

来自分类Dev

使用Babel扩展ES6中的内置本机

来自分类Dev

使用 Babel (PhpStorm) 的 ES6 Transpile 错误

来自分类Dev

如何使用 babel-loader 将 node_module 中的一个特定文件/文件夹从 es6 转换为 es5?

来自分类Dev

使用babel-node在Visual Studio Code中进行调试

来自分类Dev

使用Swift和Xcode 6对UIGestureRecognizer进行子类化-如何导入UIGestureRecognizerSubclass.h?

来自分类Dev

babel-node无法识别jsx <

来自分类Dev

使用Browser6和babel下的ES6编译问题来响应JavaScript

来自分类Dev

使用Browser6和babel下的ES6编译问题来响应JavaScript

来自分类Dev

使用browserify / babel进行业力配置

来自分类Dev

使用ES6和ES7功能的Javascript库是否需要babel-polyfill?

来自分类Dev

ES6和ES2016在cluster.on上使用babel的不同行为

来自分类Dev

使用Babel.js将ES6箭头功能编译为Es5

来自分类Dev

使用Getter和Setter修改值而无需在Swift中进行子类化

Related 相关文章

  1. 1

    未使用Node + ES6 + Babel定义的类方法

  2. 2

    如何在Ember CLI中使用ES6语法对Ember类进行子类化

  3. 3

    如何在Ember CLI中使用ES6语法对Ember类进行子类化

  4. 4

    解析-使用Swift进行子类化?

  5. 5

    使用ES6导出课程(Babel)

  6. 6

    如何使用Node JS设置Babel 6以在服务器端代码中使用ES6?

  7. 7

    使用Babel编译Node / Express以进行生产

  8. 8

    如何使用ES6语法导入firebase-functions和firebase-admin以使用Babel进行Node 10的编译

  9. 9

    babel-node es6“ REPL不支持模块”

  10. 10

    如何快速学习jslib?React.js,AngularJS,Node,ES6,Babel

  11. 11

    如何首先使用EF数据库进行子类化

  12. 12

    如何使用非可选属性对UITableViewController进行子类化

  13. 13

    使用输入参数崩溃在Swift中对CIFilter进行子类化

  14. 14

    如何避免使用合成对Pandas DataFrame进行子类化?

  15. 15

    如何首先使用EF数据库进行子类化

  16. 16

    使用ES6 / Babel语法的systemJS相对动态加载

  17. 17

    使用Babel扩展ES6中的内置本机

  18. 18

    使用 Babel (PhpStorm) 的 ES6 Transpile 错误

  19. 19

    如何使用 babel-loader 将 node_module 中的一个特定文件/文件夹从 es6 转换为 es5?

  20. 20

    使用babel-node在Visual Studio Code中进行调试

  21. 21

    使用Swift和Xcode 6对UIGestureRecognizer进行子类化-如何导入UIGestureRecognizerSubclass.h?

  22. 22

    babel-node无法识别jsx <

  23. 23

    使用Browser6和babel下的ES6编译问题来响应JavaScript

  24. 24

    使用Browser6和babel下的ES6编译问题来响应JavaScript

  25. 25

    使用browserify / babel进行业力配置

  26. 26

    使用ES6和ES7功能的Javascript库是否需要babel-polyfill?

  27. 27

    ES6和ES2016在cluster.on上使用babel的不同行为

  28. 28

    使用Babel.js将ES6箭头功能编译为Es5

  29. 29

    使用Getter和Setter修改值而无需在Swift中进行子类化

热门标签

归档