Node.js 为什么我的module.exports不';不行?

Node.js 为什么我的module.exports不';不行?,node.js,Node.js,这是我的基本node.js应用程序,只有两个文件: app.js var express = require('express') , routes = require('./routes') , http = require('http') , path = require('path'); var app = express(); module.exports = { test: "test" }; // all environments app.set('port'

这是我的基本node.js应用程序,只有两个文件:

app.js

var express = require('express')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path');
var app = express();

module.exports = { 
  test: "test"
};


// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
    // defining  middlewares

app.get('/', routes.index);




http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
还有我的index.js:

var server = require('../app');
exports.index = function(req, res){
    console.log(server);
    res.send('Hello world');
};

我的问题是,当我转到
http:\\localhost:3000
时,我在控制台中看到
{}
而不是
{test:“test”}
,它看起来像
模块。eports
无法正常工作。为什么?

您不需要在index.js中包含应用程序

indes.js应该是

exports.index = function(req, res){
    console.log(server);
    res.send('Hello world');
};
我假设index.js在routes文件夹中,如下所示

app.js
routes
  index.js

app.js
中要求
index.js
,然后在
index.js
中要求
app.js
,对我来说就像是代码味道。此外,如果您使用
var app=module.exports=express()
,则express可以将您的应用程序视为中间件(例如,您可以有第二个应用程序
需要第一个应用程序,并将一些请求传递给它)

当我需要访问另一个所需文件中的
app
时,我会执行以下操作:

// ./routes/index.js
module.exports = function(app){
  var routes = {};
  routes.index = function(req, res){
    console.log(app.myConfig);
    res.send('Hello world');
  };
  return routes;
};

// ./app.js
var app = module.exports = express();
app.myConfig = {foo:'bar'};
var routes = require('./routes/index.js')(app);

你确定它应该是../app吗?是的,我想,因为index.js在文件夹“routes”中,请参阅关于循环依赖项的内容。谢谢,这对我很有帮助。如果我不包括app,那么服务器没有定义好。你可以将其移动到
server.js
然后
require('../server'))
。但是你想用它做什么呢?如前所述,否则它将是一个循环引用,这不是最好的方法。非常感谢,这很有帮助