问题 require('mypackage.js')和require('mypackage')有什么区别?


这两个 require 语句似乎以相同的方式工作:

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

var Mypackage require('mypackage');

它们之间有区别吗?


1433
2018-03-18 07:50


起源

社区倾向于使用第二种。 - beatgammit


答案:


这是答案:

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_modules 和 utils 通过以下方式:
    ./node_modules/utils.js
    ./node_modules/utils/index.js
      ./node_modules/utils/package.json
  4. 如果 Node.js的 仍然无法在上述步骤中找到该文件,然后Node.js将开始从环境变量中查看目录路径,即 NODE_PATH 在您的机器上设置(如果您在Windows上,显然由Node.JS安装程序文件设置) 然后,在上述所有步骤中找不到,将堆栈跟踪打印到 stder
    例如。Error:Cannot find module 'yourfile'
    有关更多信息:链接是 这里 即便是 循环要求() 很好地解释了。

14
2018-03-18 07:54



但是有什么区别呢?两者都在为我工作..
你不相信答案?考虑上面的逻辑,并认为你正在编写一个算法然后经历这个 链接 - Amol M Kulkarni
感谢您的回答