在node.js中,是否可以在没有网络模块的情况下要求(' net')?

时间:2015-12-04 03:59:02

标签: javascript node.js

在" node_modules"文件夹我没有看到名为" net"的文件夹,但很多代码都在使用require('net')。我甚至搜索了#34; net"在" node_module"内的每个文件夹中,但没有任何内容。

1 个答案:

答案 0 :(得分:1)

net是NodeJS的内置包,不需要显式安装。当您使用require('package')时,将首先在内置包中搜索

要使用其他没有安装NodeJS并且未安装的软件包,也不能使用它。

取自Ben Nadel's blog

  1. 首先,Node.js查看给定模块是否是核心模块 - Node.js附带了许多直接编译成可执行二进制文件的模块(例如http,fs,sys,events ,路径等)。这些核心模块将始终优先于加载算法。
  2. 如果给定的模块不是核心模块,Node.js将开始搜索名为" node_modules" 的目录。它将从当前目录(相对于Node中当前正在执行的Javascript文件)开始,然后在文件夹层次结构中向上运行,检查node_modules文件夹的每个级别。
  3. 一旦Node.js找到node_modules文件夹,它就会尝试将给定模块加载为(.js)Javascript文件或命名子目录。并且,如果它找到了命名的子目录,它将尝试以各种方式加载文件。
  4. 如果仍然无法以此目录搜索方式找到该文件,Node.js将继续查看" require.paths"中列出的目录路径。阵列即可。此数组中的路径值默认为部分由环境变量NODE_PATH定义的路径;但是,它们可以在Node.js应用程序中以编程方式进行更新。