节点要求返回undefined

Wor*_*orp 5 javascript undefined require node.js

我的节点代码中有一个ErrorHandler类来处理所有发生的错误.

每个错误都有自己的类.所有类都放在单独的文件中,因此文件夹结构为:

  • ErrorHandler.js
    • Error110.js
    • Error131.js
    • ...

ErrorHandler需要这些文件中的每一个(以及其他一些文件)

var serverErrorCodes        = require('../../config/ErrorCodesConfig').server,
clientErrorCodes            = require('../../config/ErrorCodesConfig').client,
Error110                    = require('./errors/Error110').Error110,
Error131                    = require('./errors/Error131').Error131,
Error132                    = require('./errors/Error132').Error132,
Error133                    = require('./errors/Error133').Error133,
Error150                    = require('./errors/Error150').Error150;
Run Code Online (Sandbox Code Playgroud)

在运行时检查节点调试器时,需要的结果是:

Closure:
  Error110: function Error110(params)
  Error131: function Error131(params)
  Error132: undefined
  Error133: undefined
  Error150: function Error150(messageObject, callback)
Run Code Online (Sandbox Code Playgroud)

在require之后,Error132和Error133不可用,而其他则完美.

我已经读过如果你有一个需求周期就会发生这种情况,因此所需的模块(A)需要一个模块(B),它再次需要模块A.节点然后通过undefined在第一次需要之后返回来结束这个循环.不是这种情况.

所以我的最后一个猜测是,在执行时,由于节点的异步性质,文件"尚未"需要,因此只包括"一些"文件.但是require是一个同步函数.我不确定这种情况是否可行以及我将如何检查它.

我在这里一无所知,非常感谢帮助.

最诚挚的问候,Worp

编辑1:
正如Travis Webb所指出的:这是错误的!
如果您需要一个已包含在代码前面某处的模块,也会发生这种情况.我想到了这个,但我不需要一个模块.这一切似乎都不是真的,因为,例如,util模块需要包含在每个使用它的文件中,而不是只包含一次.

Tra*_*ebb 20

更简单的解释是module.exports解析到undefined您需要的模块内部.发布失败模块的代码.

如果您需要一个已包含在代码前面某处的模块,也会发生这种情况.

这种说法是错误的.

由于节点的异步性质,文件"尚未"需要

require是同步的.这是不可能的.

正确的是,如果模块A需要B,而这又需要A,那么Aundefined在模块中B.但我不确定这是不是问题.

  • 现在怎么样?:) (2认同)

Jes*_*ris -1

你确定里面的文件正确吗?console.log(require('./errors/Error132')) 显示什么?Error132 和 Error133 文件的内容是什么?