¿Cuál es la diferencia entre require (‘mypackage.js’) y require (‘mypackage’)?

Ambas require declaraciones parezcan funcionar de la misma manera:

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

var Mypackage require('mypackage');

¿Hay alguna diferencia entre ellos?

Aquí está la respuesta:

 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 busca ver si el módulo dado es un módulo central. (por ejemplo, http , fs , etc.) Siempre tiene prioridad en los módulos de carga.
  2. Si el módulo dado no es un módulo central (por ejemplo, http , fs , etc.), Node.js comenzará a buscar un directorio llamado node_modules .
    Comenzará en el directorio actual (relativo al archivo que se está ejecutando actualmente en Node.JS ) y luego se abrirá camino hasta la jerarquía de carpetas, verificando cada nivel para una carpeta node_modules. Una vez que Node.JS encuentra la carpeta node_modules , intentará cargar el módulo dado como un archivo JavaScript (.js) o como un subdirectorio con nombre; si encuentra el subdirectorio con nombre, intentará cargar el archivo de varias maneras. Así por ejemplo
  3. Si realiza una solicitud para cargar el módulo, “utils” y es un directorio, no un archivo .js, entonces:
    Node.JS buscará un directorio jerárquico para node_modules y utils de las siguientes maneras:
    ./node_modules/utils.js
    ./node_modules/utils/index.js
    ./node_modules/utils/package.json
  4. Si Node.JS todavía no puede encontrar el archivo en los pasos anteriores, Node.js comenzará a buscar en las rutas del directorio desde las variables de entorno, es decir, NODE_PATH configurado en su máquina (obviamente establecido por el archivo instalador Node.JS si está en Windows) ) No se encuentra en todos los pasos anteriores, imprime un seguimiento de la stack para hacer
    Ejemplo : Error: Cannot find module 'yourfile'
    Para obtener más información: el enlace está aquí, incluso el recurso cíclico require () se explica muy bien.