如何在node.js中使用`require`时传递变量?

时间:2012-02-05 04:45:34

标签: node.js

在我的 app.js 中,我有3行以下。

var database = require('./database.js');
var client = database.client
var user = require('./user.js');

user.js文件看起来就像普通的帮助器方法。但是,它需要与数据库进行交互。

user.js的

exports.find = function(id){
  //client.query.....
}

显然,我想在client文件中使用user.js。无论如何,当我使用client方法时,我可以将此user.js传递给require文件吗?

4 个答案:

答案 0 :(得分:49)

我认为你想要做的是:

var user = require('./user')(client)

这使您可以将客户端作为模块中每个函数的参数 或者作为模块范围变量,如下所示:

module.exports = function(client){

 ...

}

答案 1 :(得分:6)

此问题类似于:Inheriting through Module.exports in node

具体回答你的问题:

module.client = require('./database.js').client;
var user = require('./user.js');

在user.js中:

exports.find = function(id){
  // you can do:
  // module.parent.client.query.....
}

答案 2 :(得分:-2)

您应该在user.js中添加相同的代码

<强> app.js

var client = require('./database.js').client; // if you need client here at all
var user = require('./user.js');

<强> user.js的

var client= require('./database.js').client;
exports.find = function(id){
  //client.query.....
}

我没有看到这样做的任何缺点......

答案 3 :(得分:-2)

您为什么要使用require,对于scr,请不要使用source。与require相同,我们可以在此函数中传递args。

var x="hello i am you";
console.log(require(x));  //error
console.log(source(x));   //it will run without error