app.jsノードアプリケーションがあります。このファイルが大きくなり始めているので、コードの一部を他のいくつかのファイルに移動して、app.jsファイルに「必要」または「含め」ます。
私は次のようなことを試みています:
// 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');
car.jsで:
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
エラーが発生しました:
ReferenceError: Schema is not defined
(すべてを同じapp.jsファイルに含めるのではなく)car.jsのコンテンツをロードするように探しているだけです。これをnode.jsで行う特定の方法はありますか?
1
スキーマはそのスコープに存在しません。スキーマを参照するには、エクスポートされた関数を使用してスキーマをcar.jsに渡してみます。または、car.js内にmongooseが必要です。
—
ロバート
Node.jsは、コードをさまざまなモジュールに分割するCommonJSを利用します。大まかに言うと、Nodeアプリのコードのスコープは、それが定義されているファイルです。そのため、car.jsでmongooseを必要とし、car.jsでは、アプリの残りの部分をエクスポートする必要があります。あなたがしているように、メインファイルでそれを必要とします。
—
Matt Greer、