【问题标题】:How does commonjs require("moduleName") work? [duplicate]commonjs require("moduleName") 是如何工作的? [复制]
【发布时间】:2018-06-22 07:35:58
【问题描述】:

一段时间以来,我一直在想一个愚蠢的问题: require("moduleName") 是如何工作的?

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

谢谢

【问题讨论】:

标签: javascript node.js commonjs


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2012-09-19
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多