commonjs需要(“moduleName”)如何工作? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我心中有一个愚蠢的问题:require("moduleName")是如何工作的?

我明白,如果我的项目中有一个文件moduleA.js,我可以使用require("./moduleA")加载模块。但对于许多“知名库”,如express,lodash等,我不需要显式地写出库所在的相对路径。相反,我只使用模块名称(例如require('lodash');)。我的问题是:这是如何工作的?如何以这种方式使我自己的模块工作,其中模块可以全局加载而无需编写路径(例如.require('moduleA'))。

谢谢

javascript node.js commonjs
2个回答
1
投票

使用NPM安装库时,库将安装在名为node_modules的文件夹中,当您创建require关键字时,节点将查找该文件夹中的包名称。当您需要js文件时,应指定其路径。


1
投票

require('./moduleA')这样的相对路径意味着您要在项目中导入脚本或模块。像require('loadash')这样的“众所周知的”路径意味着您要导入外部依赖项,可以在C:/path/to/project/node_modules/lodash下本地安装到您的项目,也可以全局安装到您的帐户或计算机,具体取决于您在安装Node.js时配置npm的方式。那条路可能就像C:/Users/yourname/AppData/Roaming/npm/node_modules/lodash那样。

如果您在npm上发布模块,其他人将能够将其作为外部依赖项和require()安装,而无需指定它的相对路径。

© www.soinside.com 2019 - 2024. All rights reserved.