クラスへの参照からファイル名を取得する方法はありますか? この例は、私がやろうとしていることを説明するために単純化しすぎていることに注意してください (ロギング ライブラリの提案を開始しないでください!)
//Logger1.js
class Logger1 {
}
//MainProcess.js
class MainProcess {
startChildProcess(Logger) {
//This extension doesn't work, but looking to find something similar that does:
Logger.fileName = () => {
return __filename
}
let loggerFileName = Logger.fileName() //Returns "Main.js" not "Logger1.js", so no good...
childProcess.fork(processFileName, [loggerFileName] )
}
}
//In a child process spawned by main:
loggerPath = process.argv[2]
let Logger = require(loggerPath)[path.basename(loggerPath).replace(".js","")]
let logger = new Logger()
もちろん、文字列値を持つプロパティや、Logger1 クラスの __filename を返すメソッドを追加することもできますが、それは避けたいと思います。Logger1 やその他の外部コードをきれいに保ちながら、MainProcess クラス内からこれを行う方法はありますか?
ロガーのインスタンスを渡さない理由は、メイン プロセスが子プロセスを作成し、これらの子プロセスが独自のロガーをインスタンス化するためです。また、私が知る限り、オブジェクト参照を子プロセスに渡す方法はありません。