2017-09-21 9 views
0

編集:問題の特定に進展しました。 Configurationクラスでsuper()を呼び出すと、フィードに何が入っても値は取得されません。クラスが値を継承することを拒否しました

私もときrequire("util").inspect()エド、私はその値を記録しようとすると、しかし、それは単にConfiguration {}として起動します、Configurationクラスをロードしようとしています。ここで

config.jsの中、クラスコンフィギュ

class Configuration extends Object { 
    constructor(path, app) { 
    super(_.config); 
    _.path = path; 
    try { 
     _.config = reload(path); 
     console.log(_.config); 
    } catch(err) { 
     this.setup(() => { 
     _.config = reload(path); 
     }, (err) => app.logger.critical); 
    } 
    } 

... 

} 

が、私はそれをインスタンス化しています方法は次のとおりです。application.jsで

、クラスのアプリケーション

this.config = new Config(this.root + "/config.json", this); 
logger.debug(`Config instantiated`, `values = ${require("util").inspect(this.config)}`); // prints "DEBUG • Config instantiated • values = Configuration {}" 
+0

どこ '' 'Config'''クラスですか? – Wainage

+0

[inspect()のオプション](https://nodejs.org/api/util.html#util_util_inspect_object_options)を渡そうとしましたか? showHiddenのように –

+0

@Wainage 'Config'は、config.jsを' require'したときにインポートした名前です。 – ffxhand

答えて

0

私は終わりましたこの問題の解決方法を考え出すコメントのJeff Mは、これがV8バグであった可能性があると示唆していましたが、実際にはECMAScript仕様に従って動作しています。

主な変更点は、私がを延長していないことです。Objectです。ここで

は私がに上陸してきた概念です。(コードが頻繁にストリップダウンし、簡略化された)

let inherit = { foo: "bar", baz: 4 }; 

class TestClass { 
    constructor() { 
    this.test = "thing"; 
    // this = TestClass { 
    //   test: "thing" } 

    Object.assign(this, inherit); 
    // this = TestClass { 
    //   test: "thing", 
    //   foo: "bar", 
    //   baz: 4 } 
    } 
} 
関連する問題