我有一段时间在脑海里有一个愚蠢的问题:
require("moduleName")
如何运作?
我了解如果我的项目中有文件moduleA.js
,我可以使用require("./moduleA")
加载模块。但对于许多着名的图书馆来说,#34;如express,lodash等,我不需要显式写出库所在的相对路径。相反,我只使用模块名称(例如require('lodash');
)。我的问题是:这是如何工作的?如何以这种方式使我自己的模块工作,模块可以在不写路径的情况下全局加载(例如require('moduleA')
)。
由于
答案 0 :(得分:1)
使用NPM安装库时,库会安装在名为node_modules
的文件夹中,当您创建require
关键字时,节点会在该文件夹中查找软件包名称。
当您需要js文件时,应指定其路径。
答案 1 :(得分:1)
像require('./moduleA')
这样的相对路径意味着您要在项目中导入脚本或模块。 A"众所周知的"像require('loadash')
这样的路径意味着您要导入外部依赖项,可以在C:/path/to/project/node_modules/lodash
下本地安装到您的项目,也可以全局安装到您的帐户或计算机,具体取决于您配置npm
的方式当你安装Node.js.该路径可能类似于C:/Users/yourname/AppData/Roaming/npm/node_modules/lodash
。
如果您在npm上发布模块,则其他人可以将其作为外部依赖项安装,require()
,而无需指定相对路径。