javascript - not - nodejs require
NodeJs: TypeError: require(...) no es una funciĆ³n (5)
Estoy tratando de requerir un archivo y luego pasarlo a una var. Estoy siguiendo this tutorial para crear un sistema de autenticación. Después de escribir el archivo server.js e intentar compilar, recibí un error bson, por lo tanto, cambié la línea que requería la versión de lanzamiento en mangosta.
Aquí están mi código y error:
server.js
require(''./app/routes'')(app, passport);
Error
require(''./app/routes'')(app, passport);
^
TypeError: require(...) is not a function
at Object.<anonymous> (d:/Node JS learning/WorkWarV2/server.js:38:24)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:475:10)
at startup (node.js:117:18)
at node.js:951:3
Process finished with exit code 1
He leído que esto generalmente significa que requireJS no se carga correctamente, pero no sé por qué ni cómo solucionarlo.
Editar debido al comentario:
Según lo solicitado,
here
está el resultado de
console.log(require);
Creo que esto significa que
module.exports
en su módulo
./app/routes
no está asignado para ser una función, por lo que
require(''./app/routes'')
no se resuelve en una función, por lo tanto, no puede llamarlo como un una función como esta
require(''./app/routes'')(app, passport)
.
./app/routes
si quieres que
./app/routes
más sobre eso.
Debería verse algo como esto;
module.exports = function(app, passport) {
// code here
}
Está exportando una función que luego se puede llamar como
require(''./app/routes'')(app, passport)
.
Otra razón por la que podría ocurrir un error similar es si tiene una dependencia de módulo circular donde el módulo A está tratando de
require(B)
y el módulo B está tratando de
require(A)
.
Cuando esto sucede, será detectado por el subsistema
require()
y uno de ellos volverá como
null
y, por lo tanto, tratar de llamarlo como una función no funcionará.
La solución en ese caso es eliminar la dependencia circular, generalmente rompiendo el código común en un tercer módulo que ambos pueden cargar por separado, aunque los detalles de la reparación de una dependencia circular son únicos para cada situación.
Para mí, cuando hago la función Invocada inmediatamente, necesito poner
;
al final de
require()
.
Error:
const fs = require(''fs'')
(() => {
console.log(''wow'')
})()
Bueno:
const fs = require(''fs'');
(() => {
console.log(''wow'')
})()
Para mí, este fue un problema con las dependencias cíclicas.
IOW, el módulo A requería el módulo B y el módulo B requería el módulo A.
Entonces, en el módulo B,
require(''./A'')
es un objeto vacío en lugar de una función.
Para mí, obtuve un error similar cuando cambié entre ramas: una usaba una versión más nueva ("mecanografiada") de los paquetes
@google-cloud/datastore
que devuelve el objeto con el constructor Datastore como una de las propiedades del objeto exportado y cambié a otra rama por una tarea, se utilizó una versión anterior del almacén de datos, que exporta el constructor del almacén de datos "directamente" como valor
module.exports
.
Obtuve el error porque node_modules todavía tenía módulos más nuevos utilizados por la rama desde la que cambié.
Recuerde exportar sus
routes.js
.
En
routes.js
, escriba sus rutas y todo su código en este módulo de funciones:
exports = function(app, passport) {
/* write here your code */
}