Luc*_*Luc 97 javascript node.js
我有一个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');
Run Code Online (Sandbox Code Playgroud)
在car.js:
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
Run Code Online (Sandbox Code Playgroud)
我收到了错误:
ReferenceError: Schema is not defined
Run Code Online (Sandbox Code Playgroud)
我只是想加载car.js的内容(而不是在同一个app.js文件中包含所有内容)在node.js中是否有一种特殊的方法可以做到这一点?
Ray*_*nos 100
把重点放在其他人一直var foo
在顶层说的话并不能创造一个全局变量.如果你想要一个全局变量然后写global.foo
.但我们都知道全局是邪恶的.
如果你是在我继续使用的node.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;
require('./models/car.js').make(Schema, mongoose);
Run Code Online (Sandbox Code Playgroud)
在car.js
function make(Schema, mongoose) {
// Define Car model
CarSchema = new Schema({
brand : String,
type : String
});
mongoose.model('Car', CarSchema);
}
module.exports.make = make;
Run Code Online (Sandbox Code Playgroud)
kyb*_*kos 55
正确的答案通常是使用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");
Run Code Online (Sandbox Code Playgroud)
Dor*_*ian 18
简短回答:
// lib.js
module.exports.your_function = function () {
// Something...
};
// app.js
require('./lib.js').your_function();
Run Code Online (Sandbox Code Playgroud)
你可以把
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
Run Code Online (Sandbox Code Playgroud)
在你的car.js文件的顶部,它可以工作,或者你可以做Raynos所说的事情.
归档时间: |
|
查看次数: |
126946 次 |
最近记录: |