有没有办法从对类的引用中获取文件名?请注意,此示例过于简化以说明我正在尝试做的事情(请不要开始建议日志库!)
//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 和任何其他外部代码干净?
我不传递记录器实例的原因是主进程然后创建子进程,这些子进程实例化自己的记录器。据我所知,没有办法将对象引用传递给子进程。