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

use*_*594 32 node.js

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

var database = require('./database.js');
var client = database.client
var user = require('./user.js');
Run Code Online (Sandbox Code Playgroud)

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

user.js的

exports.find = function(id){
  //client.query.....
}
Run Code Online (Sandbox Code Playgroud)

显然,我想clientuser.js文件内部使用.无论如何我可以将它传递clientuser.js文件,而我正在使用require方法?

Dsl*_*yer 53

我想你想要做的是:

var user = require('./user')(client)
Run Code Online (Sandbox Code Playgroud)

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

module.exports = function(client){

 ...

}
Run Code Online (Sandbox Code Playgroud)


Shr*_*hna 6

此问题类似于:通过节点中的Module.exports继承

专门回答你的问题:

module.client = require('./database.js').client;
var user = require('./user.js');
Run Code Online (Sandbox Code Playgroud)

在user.js中:

exports.find = function(id){
  // you can do:
  // module.parent.client.query.....
}
Run Code Online (Sandbox Code Playgroud)