egg框架使用debug模块调试出错
发布于 7 年前 作者 holyselina 5067 次浏览 来自 问答

情况是这样,在设置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 回复

可以复现,谢谢反馈。

跟踪地址:https://github.com/eggjs/egg/issues/1167

建议 cnode 添加关联 Github PR 状态功能

过周末忘记发版本了,重新安装下依赖即可。

回到顶部