Eu tenho um aplicativo de nó app.js. Como este arquivo está começando a crescer, gostaria de mover alguma parte do código em alguns outros arquivos que eu "exigiria" ou "incluiria" no arquivo app.js.
Estou tentando coisas 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');
em car.js:
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
Eu entendi o erro:
ReferenceError: Schema is not defined
Estou apenas procurando ter o conteúdo do car.js carregado (em vez de ter tudo no mesmo arquivo app.js). Existe uma maneira particular de fazer isso no node.js?
javascript
node.js
Luc
fonte
fonte
Respostas:
Colocar ênfase no que todo mundo está dizendo
var foo
no nível superior não cria uma variável global. Se você quiser uma variável global, escrevaglobal.foo
. mas todos nós sabemos que os globais são maus.Se você é alguém que usa globais como aquele em um projeto node.js em que eu estava, eu os refatoraria porque há poucos casos de uso para isso (há algumas exceções, mas este não é um).
em car.js
fonte
return {models: {car: CarModel, dealer: CarDealer}, carStuff: carStuff}
A resposta correta geralmente é usar require, mas em alguns casos não é possível.
O código a seguir resolverá o problema, mas use-o com cuidado:
fonte
#include
?Resposta curta:
fonte
Cannot find module lib.js
.require('./lib.js').your_function()
você pode colocar
na parte superior do seu arquivo car.js para que funcione, ou você pode fazer o que Raynos disse para fazer.
fonte
Se você deseja apenas testar uma biblioteca na linha de comando, pode fazer:
fonte
Essa abordagem funciona para mim em Node.js, há algum problema com este ?
Arquivo 'include.js':
Arquivo 'main.js':
fonte