2012-02-06 53 views
4

传承通过Module.exports这可能是我太傻了......在节点

我使用的是快速结点,我必须使用出口航线一个单独的文件。在它上面,我需要并转换成一个变量,一个我使用npm安装的包。

var passwordHash = require('password-hash'); 
app.get("/signup", routes.signup); 

内routes.signup,我有:

passwordHash.generate(req.form.username, {algorithm: 'sha512'}) 

,它抛出一个错误说passwordHash是不确定的。我怎么能去“继承”说要求调用?

回答

1

单独的文件有不同的范围,所以如果你想在你的其他文件中使用passwordHash,那么你也需要在该文件中调用require('password-hash');

1

你可以通过应用程序变量来移动你的变量,这应该是无处不在的。尝试做这样的事情:

app.passwordHash = require('password-hash'); 
app.get("/signup", routes.signup); 

,你可以尝试其他的事情是使用全局变量,这意味着从passwordHash删除变种。不知道这是否会用于快递,但值得检查。

passwordHash = require('password-hash'); 
app.get("/signup", routes.signup); 

让我知道它是否有帮助。

4

您也可以执行下列操作(说这个代码在app.js中定义):

module.passwordHash = require('password-hash'); 
app.get("/signup", routes.signup); 

在routes.signup:

var passwordHash = module.parent.passwordHash; // from app.js 
passwordHash.generate(req.form.username, {algorithm: 'sha512'}); 
0

我知道这个问题是旧的,但这种会帮助我:使用出口!

所以,如果我有一个名为Index.js文件与此:

var model = require("./Model"); 

function test() 
{ 
    model.setMyVar("blah"); 
    console.log(model.myVar); 
} 

我Model.js应该是这样的:

var myVar; 
exports.myVar = myVar; 

function setMyVar(value) 
{ 
    this.myVar = value; 
} 
exports.setMyVar = setMyVar;