从nodejs中的javascript ES6类引用中获取文件名

时间:2016-11-28 23:05:35

标签: javascript node.js ecmascript-6 es6-class

有没有办法从引用类中获取文件名?请注意这个例子已经过简化,以说明我正在尝试做什么(请不要开始建议记录库!)

//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和任何其他外部代码清洁?

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

0 个答案:

没有答案