我有一个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
我只是希望加载car.js的内容(而不是将所有内容都放在同一个app.js文件中),在node.js中有什么特殊的方法可以做到这一点吗?
发布于 2012-03-31 00:23:02
正确的答案通常是使用require,但在少数情况下这是不可能的。
下面的代码可以做到这一点,但要小心使用:
var fs = require('fs');
var vm = require('vm');
var includeInThisContext = function(path) {
var code = fs.readFileSync(path);
vm.runInThisContext(code, path);
}.bind(this);
includeInThisContext(__dirname+"/models/car.js");
发布于 2014-04-09 00:28:22
简短的回答:
// lib.js
module.exports.your_function = function () {
// Something...
};
// app.js
require('./lib.js').your_function();
发布于 2011-04-12 02:46:59
你可以把
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
在你的car.js文件的顶部,让它工作,或者你可以做雷诺斯说要做的事情。
https://stackoverflow.com/questions/5625569
复制相似问题