CNode

egg框架使用debug模块调试出错

问答
Hholyselina发布于9 年前最后回复9 年前4 回复5976 浏览0 收藏

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

A
atian25#1·9 年前

可以复现,谢谢反馈。

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

O
okoala#3·9 年前

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

A
atian25#4·9 年前

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

参与回复
登录后即可参与回复。登录