我想使用module.exports
将路径分成几个不同的文件。
这是一个非常简单的文件:
// server/routes.js
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('index/index');
});
}
如何将其导入我的入口点文件?到目前为止我有这个......
var routes = require('./server/routes');
// ...
// try to import routes instead
app = routes(app);
导致我的服务器崩溃:
TypeError: Cannot read property 'listen' of undefined
更新:这是整个条目文件
var express = require('express');
var app = express();
var colors = require('colors');
var moment = require('moment');
var exphbs = require('express-handlebars');
var routes = require('./server/routes');
// set port
app.set('port', process.env.PORT || 3000);
// set templating engine
app.engine('.hbs', exphbs({defaultLayout: 'ApplicationLayout', extname: ".hbs"}));
app.set('view engine', ".hbs");
// try to import routes instead
//app = routes(app);
// launch server
app.listen(app.get('port'), function() {
console.log(
colors.rainbow('-------------------\n')
+ "App running on port: "
+ colors.red.underline(app.get('port'))
+ " "
+ colors.blue(moment().format('h:mm:ss a'))
+ colors.rainbow('\n-------------------')
);
});
答案 0 :(得分:3)
由于您的app = routes(app)
没有返回任何内容,因此您在function(app)
做了一些奇怪的事情。
尝试简单:
routes(app);
app
是一个对象引用(不是对象的副本),所以无论你在函数内部用它做什么都会立即生效。
P.S。
你可以按照写作的方式进行,但在这种情况下function(app)
应该返回app
:
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('index/index');
});
return app;
}