2012-11-24 10 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

자신의 파일에 레디 스 클라이언트 객체를 넣어 다른 파일 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

아참, 모듈을 찾을 수 없습니다. '클라이언트 파일 ...'루트 디렉토리에 파일을 만들었지 만. router.js가 하위 디렉토리에 있기 때문일 수 있습니까? –

관련 문제