Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点要求返回未定义_Javascript_Node.js_Undefined_Require - Fatal编程技术网

Javascript 节点要求返回未定义

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类,它处理所有发生的错误

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

  • ErrorHandler.js
    • Error110.js
    • Error131.js
ErrorHandler需要这些文件中的每一个(以及其他一些文件)

在运行时签入节点调试器时,需要的结果列表为:

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)