我正在Lynda.com上进行Node.js基本训练......
关注视频,但我在终端中收到此错误。
“TypeError:object不是函数”
node_modules /飞行/ index.js
var count = 0,
destinations = [];
var Flight = function () {
this.data = {
number : null,
origin: null,
destination: null,
departs: null,
arrives: null,
actualDepart: null,
actualArrive: null
};
this.fill = function (info) {
for(var prop in this.data) {
if(this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerDepart = function () {
this.data.actualDepart = Date.now();
};
this.triggerArrive = function () {
this.data.actualArrive = Date.now();
};
this.getInformation = function () {
return this.data;
};
};
exports.create = function (info) {
var instance = new Flight();
instance.fill(info);
count++;
if(destinations.indexOf(info['destination']) <0) {
destinations.push(info['destination']);
}
return instance;
};
exports.getCount = function() {
return count;
};
exports.getDestinations = function () {
return destinations;
};
路由/ index.js
/*
* GET home page.
*/
var flight= require('../node_modules/flight');
var flight1 = flight({
number :1,
origin: 'LAX',
destination : 'DCA',
departs: '9AM',
arrives:'4PM'
});
var flight2 = flight({
number : 2,
origin: 'LAX',
destination : 'PDX',
departs: '10AM',
arrives: '12PM'
});
exports.flight1 = function(req, res){
res.json(flight1.getInformation());
};
exports.flight2 = function(req, res){
res.json(flight2.getInformation());
};
app.js
/**
* Module dependencies.
*/
var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' === app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/flight1', routes.Flight1);
app.get('/flight2', routes.Flight2);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
不确定如何解决问题。
答案 0 :(得分:5)
使用flight.create
代替flight()
var flight= require('../node_modules/flight');
var flight1 = flight.create({
number :1,
origin: 'LAX',
destination : 'DCA',
departs: '9AM',
arrives:'4PM'
});
var flight2 = flight.create({
number : 2,
origin: 'LAX',
destination : 'PDX',
departs: '10AM',
arrives: '12PM'
});
您可以通过简单导出第一个模块来缓解此问题,如下所示:
exports = function (info) {
var instance = new Flight();
instance.fill(info);
count++;
if(destinations.indexOf(info['destination']) <0) {
destinations.push(info['destination']);
}
return instance;
};
exports.getCount = function() {
return count;
};
exports.getDestinations = function () {
return destinations;
};
然后您可以使用flight()
,因为您可以使用上面的.create
,但您也可以使用flight.getCount
和flight.getDestinations
,而无需使用实例。