无法使用express在nodejs中导出变量(var app = express())

时间:2014-04-05 11:12:07

标签: node.js post express module export

我在尝试解决这个问题时需要帮助

我有一个web.js文件。那边我有

  var express = require("express");
  var app = express();       
  var web2 = require("./web2");
 /* Code the start the server on the required port*/

 app.get('/param1', function(req, res){
    console.log("INSIDE GET METHOD OF WEB.JS");
 });
 module.exports.app = app

我有另一个文件web2.js.那边我有

var web = require("./web");
app = web.app;
app.get('/param2', function(req, res){
    console.log("INSIDE GET METHOD OF WEB2.JS");
});

开始时我收到错误 TypeError:无法调用未定义的方法'post'

如果我从web.js中删除第3行 - 我可以启动服务器,但是对http:/// param2的请求给出了404

更新方案:

我正在使用pg数据库,我尝试创建一个保存客户端实例的客户端(在web.js中)。然后我将其传递给其他文件(web2.js)。在web.js中,我总是将此客户端视为空

web.js中的

我有以下代码

 var pg = require("pg");
 var pgclient;

app.get('*', function(req,res,next){
   pg.connect(process.env.DATABASE_URL, function(err, client, done) {
     if(client != null){
        pgclient = client;
        console.log("Client connection with Postgres DB is established");
        next();
      }
   }
 }  


 require("./web2.js")(app, pgclient);

在web2.js中,我有以下代码

module.exports = function(app, pgclient){
   app.get('/param1', function(req,res){
     if(pgclient != null){

     }
     else{
        res.send(500, "pgclient is NULL");
     }
   });
}

代码永远不会到达web2.js中的if块(if(pgclient!= null))

1 个答案:

答案 0 :(得分:0)

问题是web.js和web2.js之间的循环依赖。当web2.js require的web.js时,web.js的module.exports尚未设置。我宁愿做这样的事情:

web.js

var express = require("express");
var app = express();

app.get("/param1", function (req, res) {
    // ...
});

require("./web2")(app);

app.listen(/* port number */);

web2.js

module.exports = function (app) {
    app.get("/param2", function (req, res) {
        // ...
    });
};