我试图将服务器初始化和其他调用从核心文件(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
我错过了什么或者做错了什么..。请帮帮忙。
发布于 2014-12-02 13:55:55
您要将一个函数传递给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'));
});
发布于 2014-12-02 13:58:44
您没有理由将一个函数返回到您的app.js
文件中,只需返回express对象:
var express = require('express');
var app = express();
// ... more variables
// ... the rest of your code
module.exports = app;
然后,进入server.js
的其余代码将运行良好。
请记住,module.exports
的工作方式类似于CommonJS中的"return
“(因此也是NodeJS)。
见文档。
https://stackoverflow.com/questions/27251147
复制相似问题