でエクスポートクラスメソッドのグローバル変数を設定するには:は、どのように私はそうのように出て壊れて、複数の異なるファイルを持っているのNode.js
index.js
utils.js
ClassA/
index.js
base.js
utilsのどこでも使用されるユーティリティ機能の数が含まれています。 ClassA/index.jsにはClassAのコンストラクタが含まれていますが、base.jsが必要です。次にClassAをエクスポートします。 Base.jsは、ClassAのプロトタイプメソッドをエクスポートします。ここでは、彼らがどのように見えるか、基本的である:
//ClassA/index.js
function ClassA() {
//constructor stuff
}
ClassA.prototype.constructor = ClassA;
require('./base')(ClassA);
module.exports = ClassA;
//ClassA/base.js
module.exports = ClassA => {
ClassA.prototype.aMethod = function() {
log('hello');
}
//utils.js
module.exports = {
log : function (logText) {
//dostuff
}
}
だから私の問題は、私はClassA/base.js
のメソッド内からのログ機能にアクセスできないことです。ファイルの先頭にconst log = require('../utils').log
を設定しても動作しません。エクスポートの中でメソッド定義の外に同じ行のコードを置くと動作しませんが、メソッド自体の中に置くとうまくいきます(期待通りですが、これはすべてのrequireステートメントをそれが必要な方法)。この乱雑で反復的なルートを使用する方法はありますか?
これは循環依存関係の問題です。恐らくhttps://stackoverflow.com/questions/10869276/how-to-deal-with-cyclic-dependencies-in-node-jsの複製ですが、私は料理を終える:D –
ああ、あなたは正しい。私はいくつかの調査を行い、それを避けるためにリファクタリングの推奨経路を取った。ありがとう! – Beckleyc