egg框架使用debug模块调试出错
情况是这样,在设置debug模块开启的时候会报错(process.env.DEBUG=’*’). 我简单查看了下代码,貌似是因为在new一个EggCore实例的时候会初始化EggLoader实例,初始化EggLoader的时候会把一个配置对象传入EggLoader,这个配置对象中包含了EggCore本身,EggCore就是app对象,部分代码如下:
const Loader = this[EGG_LOADER];
assert(Loader, 'Symbol.for(\'egg#loader\') is required');
this.loader = new Loader({
baseDir: options.baseDir,
app: this,
plugins: options.plugins,
logger: this.console,
});
但是在EggLoader构造函数中会使用debug模块打印这个配置对象,因为配置对象包含EggCore本身,继而调用EggApplication(EggCore的子类)实例的toJSON方法,toJSON方法调用inspect方法,在inspect方法中会访问this.config.env这个属性,config属性其实是代理loader的config属性的定义如下:
get config() {
return this.loader.config;
}
这时候this.loader还没有初始化完毕,所以是undefined,然后报错了:TypeError: Cannot read property ‘config’ of undefined. 不知道你们有没有这个问题,还是我自己粗心大意看错了,请各位大神指教,谢谢
4 回复
可以复现,谢谢反馈。
建议 cnode 添加关联 Github PR 状态功能
过周末忘记发版本了,重新安装下依赖即可。