TypeError: object is not a function Node.js
javascript, node.js
Solution
Use `flight.create` instead of `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'
});
You could mitigate the issue by simple exporting the first module like below:
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;
};
Then you could both use `flight()` as you could use `.create` above, but you can also use `flight.getCount` and `flight.getDestinations` too, without an instance.
Problem
I'm doing the Node.js Essential Training on Lynda.com... Following the video but I get this error in the terminal. "TypeError: object is not a function" node_modules/flight/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; }; ``` routes/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')); }); ``` Not sure how to troubleshoot.