98 votes

inclure le fichier .js externe dans app node.js

J'ai un app.js le nœud de l'application. Comme ce fichier est de commencer à se développer, j'aimerais passer une partie du code dans d'autres fichiers que je voudrais "besoin" ou de "comprendre" dans le app.js fichier.

Je suis en train d'essayer des choses comme:

// 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');

dans car.js:

// Define Car model
CarSchema = new Schema({
  brand        : String,
  type : String
});
mongoose.model('Car', CarSchema);

J'ai obtenu l'erreur:

ReferenceError: Schema is not defined

Je suis à la recherche pour avoir le contenu de car.js chargé (au lieu d'avoir tout dans le même app.js fichier) Est-il une façon particulière de le faire dans node.js ?

100voto

Raynos Points 82706

Pour mettre un accent sur ce que tout le monde a été dit, c' var foo dans le haut niveau ne permet pas de créer une variable globale. Si vous voulez une variable globale puis écrire global.foo. mais nous tous savons globales sont le mal.

Si vous êtes quelqu'un qui utilise des variables globales comme ça dans un node.js projet que j'avais sur j'aurais refactoriser, pour aussi il y a tellement peu de cas d'utilisation pour ce (Il y a quelques exceptions, mais ce n'en est pas une).

// 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;

require('./models/car.js').make(Schema, mongoose);

dans car.js

function make(Schema, mongoose) {
    // Define Car model
    CarSchema = new Schema({
      brand        : String,
      type : String
    });
    mongoose.model('Car', CarSchema);
}

module.exports.make = make;

57voto

kybernetikos Points 3127

La bonne réponse est habituellement à utilisation exigent, mais dans certains cas, il n’est pas possible.

Le code suivant va faire l’affaire, mais utilisez-le avec précaution :

18voto

Dorian Points 2384

Réponse courte :

8voto

Stephen Points 2531

vous pouvez mettre

en haut de votre fichier car.js pour qu’il fonctionne, ou vous pouvez faire ce que Raynos a dit de faire.

4voto

Bouke Versteegh Points 199

Si vous voulez juste tester une bibliothèque à partir de la ligne de commande, vous pourriez faire :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X