servidor node node.js module require

node.js - servidor - El módulo requerido por NodeJS no está disponible en otros módulos



npm (2)

Soy un poco nuevo para NodeJS. Tal vez sea así como funciona, pero para estar seguro:

Mi ''index.js'':

var fs = require(''fs''); // do something with fs here var app = require(''./app.js'');

El ''app.js''

fs.readFile(''/somedir/somefile.txt'', ''utf8'', function (err,data) { if (err) { return console.log(err); } console.log(data); });

Entonces me sale un error:

ReferenceError: fs is not defined

Como he leído, la ''solución'' a esto es ''volver a requerir'' el módulo fs en app.js. Ahora lo que sí entiendo es que el módulo fs está en caché (cualquier módulo, pero usando el ejemplo), por lo que Node seguirá siendo muy rápido. Lo que realmente no entiendo es: "Si el módulo fs se almacena en caché, así que en realidad está un poco disponible de todos modos, ¿por qué todavía tengo que" volver a requerir "el módulo?

Seré honesto; es sólo para entender por qué.


A veces podemos olvidarlo, pero es fundamental declararlo:

var fs = require(''fs'');


Cada archivo debe incluir referencias a los módulos.

index.js

var fs = require("fs"), other = require("./otherfile"); // you can now use `fs`

otroarchivo.js

var fs = require("fs"); // you can now use `fs` here

Una de las mejores partes de esto es que no está obligado a nombrar la variable de una manera determinada en un archivo determinado. Cada archivo está bastante aislado de todos los demás archivos en su biblioteca, y eso es algo muy bueno.

También sepa que puede incluir solo partes de un módulo si lo desea

var read = require("fs").readFile; read("myfile.txt", function(err, data) { if (error) { return throw error; } console.log(data); };

Explicación:

Node.js no fomenta el uso de globales; y como tal, no debe intentar implementar cosas que dependan de variables globales.

Cuando vuelve a llamar al módulo fs , en realidad no es "volver a requerirlo" sino que simplemente está declarando una variable que apunta al módulo en caché.

Ejemplo adicional:

En esta respuesta voy a detallar cómo estructurar una aplicación simple que evita el uso de globales.