为什么要求('require')在节点js中抛出错误

时间:2017-12-11 15:22:43

标签: javascript node.js

我是Node js的初学者。我正在浏览节点js文档,它说require和module是用于管理依赖关系的节点js的两个核心模块。 它们都具有全局范围,因此我们不需要('require')。

我们知道require('somefile')函数用于包含模块。 只是为了好奇,我试图在我的js文件中包含节点js的in-build require模块。 这是我的js文件中名为app.js

的代码
require('require');
require('module');
console.log('starting app');

我收到了一个错误:

enter image description here

有人可以解释一下这个错误的原因。根据定义,如果在节点js中需要函数,则此代码在逻辑上是正确的。我知道require和module默认是可用的,因为它们的全局范围。但是当我们尝试明确包含 require 模块时,为什么节点会抛出错误。

1 个答案:

答案 0 :(得分:1)

正如错误所描述的那样,找不到名为“require”的模块。

Node.js在其自身中包含一个“核心模块”列表,它将尝试在第一时间查找模块。而'require'肯定不是那里定义的模块。然后它将尝试搜索其他目录,例如“node_modules”,然后搜索文件所在的当前目录。在Node.js的核心模块列表中,在node_modules文件夹中或当前目录中都有名为“require”的 no 模块(如果在这些目录中确实有一个名为“require”的模块,那么错误可能与其他内容有关。如果是这种情况,请将这条信息添加到您的问题中)。因此,Node会在您尝试获取名为“require”的模块时看到错误。将更详细地解释用于搜索模块的node.js算法here

现在,您可能会问自己“那里的require方法来自哪里?”。 “ require ”函数实际上是在Node的module.js模块中定义的,它是Node中包含的核心模块之一。所以它开箱即用,就像在Node环境中准备的许多其他功能一样。您可以找到有关其工作原理的参考和更深入的信息here