Node.js TypeError:Object没有方法get
我试图从核心文件( app.js
)中分离服务器启动和其他调用,但是当我尝试运行它时,它发出错误, http.createServer(app).listen(app.get('port'), function(){ ^ TypeError: Object function (){ all code from app.js file }
has no method 'get'
这是app.js
文件。
/** * Module dependencies. */ module.exports = function(){ var express = require('express'); var routes = require('./routes'); var path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 4000); 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); return app; };
这是server.js
文件。
var http = require('http'), app = require('./app'); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
使用express@3.4.0
我错过了什么或做错了..请帮助。
你正在向module.exports
传递一个函数,所以当你require('./app')
module.exports
require('./app')
,你需要把它称为一个函数:
var http = require('http'), app = require('./app')(); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
你没有理由返回一个函数到你的app.js
文件中,只是返回express对象:
var express = require('express'); var app = express(); // ... more variables // ... the rest of your code module.exports = app;
然后,其余的代码到server.js
将正常工作。
请记住, module.exports
工作原理类似于“ return
”到CommonJS(因此也是NodeJS)。
见文件 。