「helpers」フォルダにhelpers.js
というファイルがあります。内容は以下のようなものです:ES6クラスで静的関数を呼び出せません
class Helpers {
constructor(config) {
if (this._singleton) {
throw new Error('A singleton has already been created.');
}
this._singleton = this;
}
/**
* Gets the singleton object.
* @returns {Helpers}
*/
static getSingleton() {
return this._singleton;
}
}
module.exports = Helpers;
はその後/helpers/user.js
に私はヘルパーのシングルトンインスタンスを取得したいです。 これは私のコードです:
const helpers = require('../helpers').getSingleton();
または
const Helpers = require('../helpers');
const helpers = Helpers.getSingleton();
私は入れませんエラーは次のとおりです。
TypeError: require(...).getSingleton is not a function
または
TypeError: Helpers.getSingleton is not a function
私はVSCodeにHelpers
上にカーソルを移動した場合、私はgetSingleton()
上にカーソルを移動するたびに、私はこのツールチップを取得し、このツールチップに
を取得し、:
ので、パスが正しいですが、それはまだ私にエラーが発生します。
としてそれを使用するあなたが持っているように、それが聞こえる: 'ヘルパー/ helpers.js'と'ヘルパー/ user.js'ので、 'require( './helpers')'や 'require( './helpers.js')'をしたいでしょう。これが問題ではないと仮定すると、 'console.log(タイプヘルパー)'は何を与えるのでしょうか? 'console.log(typeof Helpers.getSingleton)'はどうでしょうか? –
エラーが表示されない場合でも、コードは機能しません。静的メソッド内の 'this'は、コンストラクタ内で' this'とは異なるものを参照します。これはシングルトンの仕組みではありません。 'getSingleton()'は新しいインスタンス(最初に呼び出されたとき)をインスタンス化して返します。 –