Javascript 节点要求返回未定义
我的节点代码中有一个ErrorHandler类,它处理所有发生的错误 每个错误都有自己的类。所有类都放置在单独的文件中,因此文件夹结构为:Javascript 节点要求返回未定义,javascript,node.js,undefined,require,Javascript,Node.js,Undefined,Require,我的节点代码中有一个ErrorHandler类,它处理所有发生的错误 每个错误都有自己的类。所有类都放置在单独的文件中,因此文件夹结构为: ErrorHandler.js Error110.js Error131.js ErrorHandler需要这些文件中的每一个(以及其他一些文件) 在运行时签入节点调试器时,需要的结果列表为: Closure: Error110: function Error110(params) Error131: function Error131(p
- ErrorHandler.js
- Error110.js
- Error131.js
Closure:
Error110: function Error110(params)
Error131: function Error131(params)
Error132: undefined
Error133: undefined
Error150: function Error150(messageObject, callback)
Error132和Error133在要求后不可用,而其他的则完全可用
我已经了解到,如果您有一个require循环,因此一个required模块(a)需要一个模块(B),而模块(B)又需要模块a,则会发生这种情况。然后,节点通过在第一个require之后返回undefined
来结束此循环。事实并非如此
所以我最后的猜测是,在执行时,由于节点的异步性质,文件是“尚未”需要的,因此只包含“一些”文件。但require是一个同步函数。我不确定这种情况是否可能,以及我将如何检查它
我在这里不知所措,非常感谢你的帮助
致以最良好的祝愿,
麦汁
编辑1:正如特拉维斯·韦伯指出的那样:这是错误的
如果您需要一个已经包含在代码前面某个地方的模块,也会发生这种情况。我考虑过这个问题,但我不需要模块。总的来说,这似乎不是真的,因为,例如,
util
模块需要包含在使用它的每个文件中,而不是只包含一次。一个更简单的解释是,module.exports
解析为所需模块内部的未定义的。张贴故障模块的代码
如果您需要一个已经包含在代码前面某个地方的模块,也会发生这种情况
这种说法是不正确的
由于节点的异步性质,文件“尚未”是必需的
require
是同步的
如果模块A
需要B
,而后者又需要A
,则A
将在模块B
中未定义。但是我不确定这是不是问题。你确定里面的文件是正确的吗?console.log(要求('./errors/Error132')显示什么?Error132和Error133文件的内容是什么?您确定其中的文件正确吗?console.log(要求('./errors/Error132')显示什么?Error132和Error133文件的内容是什么?感谢您的快速响应!我很肯定他的内容是正确的。至少我尝试过将一个工作文件的内容复制/粘贴到一个失败的文件中(通过find/replace更改类名,注意被替换的内容),并试图以相同的结果要求它。由于我目前正在旅行,没有访问代码的权限,我会在回来后尽快发布失败的文件。所以!已经有一段时间了。很抱歉。事实证明,你是对的。我的一位同事提交了一个补丁,将每个文件中的一个数字更改,将Error133的导出改为“Error132”,将Error133的导出改为“Error132”。我为这个愚蠢的错误感到非常抱歉,我只是没有发现它。。。你能把你的评论作为一个答案,这样我就可以把它标记为正确的吗?那么你想把我的答案标记为正确的吗?嘿,特拉维斯=)我觉得你的帖子最终对它所包含的整体信息来说更重要。但这并不是这个问题的答案,因为杰西的回答实际上让我明白了这一点。我觉得你下面的答案会继续得到应有的关注,并投票支持它=)谢谢你的澄清。我将在中编辑它。因为我现在要出差几天,我回家后会尽快发布失败文件的代码。嘿,特拉维斯,你可以从我上面的评论中看到,我很愚蠢,忽略了我同事带来的打字错误。尽管如此,你的观点还是非常重要的,除了我已经在我的原始帖子中编辑了它之外。由于我还没有足够的声誉来给你打分,我能做些什么来把你的答案标记为重要的吗?继续使用Stackoverflow:)我很有耐心。尽管如此,thx还是很多!我会记住你的评论。在我投票之前只剩下5个名声了:现在怎么样?:)
Closure:
Error110: function Error110(params)
Error131: function Error131(params)
Error132: undefined
Error133: undefined
Error150: function Error150(messageObject, callback)