2012-11-24 47 views
0

我有一個節點應用程序,主要由兩個文件組成,即「app.js」主文件和「router.js」。在app.js文件中,我需要所有需要的文件,例如Redis客戶端。node.js - 從其他文件訪問所需的變量

我是一個新手總,我試圖找出如何「訪問」新創建的變量上router.js「客戶端」:

//app.js file 
var redis = require("redis"), 
    client = redis.createClient(9981, "herring.redistogo.com"); 

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



//router.js file 
exports.index = function(req, res){ 
client.get("test", function(err, reply) { 
    console.log(reply.toString()); 
}); 
}; 

我顯然得到了「客戶端沒有定義」 ,因爲它無法從該router.js文件訪問。我該如何解決?

在此先感謝。

回答

1

把Redis的客戶對象在其自己的文件,其他文件require

// client.js file 
var redis = require("redis"), 
    client = redis.createClient(9981, "herring.redistogo.com"); 
client.auth("mypassword"); 
module.exports = client; 

//router.js file 
var client = require("./client"); 
exports.index = function(req, res){ 
client.get("test", function(err, reply) { 
    console.log(reply.toString()); 
}); 
}; 
在節點

所需的模塊只裝載一次,並且每個需要的模塊文件獲取相同的對象,以便它們都共享單個Redis客戶端對象。

+0

強調我還需要在createClient()之後執行以下操作:'client.auth(「mypassword」);' –

+0

@johnsmith好的,我更新了包含該示例的示例。 – JohnnyHK

+0

哎,我得到一個無法找到模塊'./client'...雖然我已經在根目錄中創建了該文件。難道是因爲router.js在子目錄中嗎? –