通过节点中的Module.exportsinheritance

这可能是我愚蠢的…

我使用快递节点,我有一个单独的文件使用出口的路线。 在它上面,我需要并且转换为一个variables,我已经使用npm安装了一个包。

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

里面routes.signup,我有:

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

它会抛出一个错误,说明passwordHash是未定义的。 我怎么能去“inheritance”说要求调用?

你也可以做下面的事情(比如说这个代码是在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'}); 

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

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

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

你可能会尝试的另一件事是使用全局variables,这意味着从密码哈希清除var。 不知道这是否会明确,但值得检查。

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

让我知道是否有帮助。

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

所以如果我有一个名为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;