【发布时间】:2013-03-06 12:03:49
【问题描述】:
这两个require 语句的工作方式似乎相同:
var Mypackage = require('mypackage.js');
var Mypackage require('mypackage');
它们之间有区别吗?
【问题讨论】:
-
社区倾向于使用第二种。
这两个require 语句的工作方式似乎相同:
var Mypackage = require('mypackage.js');
var Mypackage require('mypackage');
它们之间有区别吗?
【问题讨论】:
答案如下:
Module.prototype.load = function(filename) {
debug('load ' + JSON.stringify(filename) +
' for module ' + JSON.stringify(this.id));
assert(!this.loaded);
this.filename = filename;
this.paths = Module._nodeModulePaths(path.dirname(filename));
var extension = path.extname(filename) || '.js';
if (!Module._extensions[extension]) extension = '.js';
Module._extensions[extension](this, filename);
this.loaded = true;
};
http、fs 等)
总是优先加载模块。http、fs 等),Node.js 将开始搜索名为 node_modules 的目录。 node_modules 文件夹,它将尝试将给定的模块加载为(.js)JavaScript 文件或命名的子目录;如果找到命名的子目录,它将尝试以各种方式加载文件。所以,例如node_modules 和
utils 通过以下方式:
./node_modules/utils.js./node_modules/utils/index.js
./node_modules/utils/package.json
NODE_PATH设置在您的机器上(显然如果您在 Windows 上,则由 Node.JS 安装程序文件设置)
然后在上述所有步骤中未找到,将堆栈跟踪打印到 stderError:Cannot find module 'yourfile'
【讨论】: