有什么要求( 'mypackage.js')和require( 'mypac

2019-07-21 20:39发布

这两个require陈述似乎相同的方式工作:

var Mypackage = require('mypackage.js');

var Mypackage require('mypackage');

他们之间有区别吗?

Answer 1:

下面是答案:

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;
};
  1. Node.js的外观,看是否给定的模块是核心模块。 (例如httpfs等)总是在装载模块的优先级。
  2. 如果给定的模块不是核心模块(例如httpfs等),Node.js的然后将开始搜寻一个新的目录, node_modules
    它会在当前目录(相对于当前执行的文件启动的Node.js ),然后运行它的方式文件夹层次结构,检查一个node_modules文件夹中每个级别。 一旦Node.js的发现node_modules文件夹,则它将尝试加载给定的模块或者作为(的.js)JavaScript文件或命名子目录; 如果发现指定的子目录,它就会试图加载各种方式的文件。 因此,例如
  3. 如果您的请求加载模块“utils的”,其目录不是一个.js文件,则:
    Node.js的将搜索分层目录node_modulesutils在以下几个方面:
    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
  4. 如果Node.js的仍然无法找到上述步骤的文件,Node.js的就会开始看到从环境变量中的目录路径即NODE_PATH你的机器(当然由Node.js的安装程序文件设置,如果你是在Windows上设置)在所有然后上述步骤没有找到,将打印一个堆栈跟踪stder
    例如Error: Cannot find module 'yourfile'
    欲了解更多信息:链接是在这里甚至循环需要()是很好的解释。


文章来源: What is the difference between require('mypackage.js') and require('mypackage')?