Tengo una aplicación de nodo app.js. A medida que este archivo comienza a crecer, me gustaría mover parte del código en otros archivos que "requeriría" o "incluiría" en el archivo app.js.
Estoy probando cosas como:
// Declare application
var app = require('express').createServer();
// Declare usefull stuff for DB purposes
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
// THE FOLLOWING REQUIRE DOES NOT WORK
require('./models/car.js');
en car.js:
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
Me sale el error:
ReferenceError: Schema is not defined
Solo estoy buscando tener el contenido de car.js cargado (en lugar de tener todo en el mismo archivo app.js) ¿Hay alguna forma particular de hacer esto en node.js?
javascript
node.js
Luc
fuente
fuente
Respuestas:
Poner énfasis en lo que todos los demás han estado diciendo
var foo
en el nivel superior no crea una variable global. Si desea una variable global, escribaglobal.foo
. pero todos sabemos que los globales son malos.Si usted es alguien que usa globales como ese en un proyecto de node.js en el que estaba, los refactorizaría, ya que hay muy pocos casos de uso para esto (hay algunas excepciones, pero este no es uno).
en car.js
fuente
return {models: {car: CarModel, dealer: CarDealer}, carStuff: carStuff}
La respuesta correcta suele ser requerir, pero en algunos casos no es posible.
El siguiente código funcionará, pero utilícelo con cuidado:
fuente
#include
?Respuesta corta:
fuente
Cannot find module lib.js
.require('./lib.js').your_function()
puedes poner
en la parte superior de su archivo car.js para que funcione, o puede hacer lo que Raynos dijo que hiciera.
fuente
Si solo desea probar una biblioteca desde la línea de comando, puede hacer:
fuente
Este enfoque me funciona en Node.js, ¿hay algún problema con este ?
Archivo 'include.js':
Archivo 'main.js':
fuente