3

有没有办法从对类的引用中获取文件名?请注意,此示例过于简化以说明我正在尝试做的事情(请不要开始建议日志库!)

//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()

我显然可以添加一个带有字符串值的属性,或者一个方法来返回 __filename Logger1 类,但我宁愿避免它。有没有办法从 MainProcess 类内部做到这一点,保持 Logger1 和任何其他外部代码干净?

我不传递记录器实例的原因是主进程然后创建子进程,这些子进程实例化自己的记录器。据我所知,没有办法将对象引用传递给子进程。

4

0 回答 0