这可能是我愚蠢......
我正在使用带有express的节点,我有一个单独的文件,使用导出路由。在它上面,我需要并转换为变量,我使用npm安装的包。
var passwordHash = require('password-hash');
app.get("/signup", routes.signup);
在routes.signup里面,我有:
passwordHash.generate(req.form.username, {algorithm: 'sha512'})
并且它抛出一个错误,说密码哈希是未定义的。我怎样才能“继承”所说的要求电话?
答案 0 :(得分: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'});
答案 1 :(得分:1)
单独的文件有不同的范围,因此如果您想在其他文件中使用passwordHash
,那么您也需要在该文件中调用require('password-hash');
。
答案 2 :(得分:1)
您可以通过app变量移动变量,该变量应该随处可访问。尝试做类似的事情:
app.passwordHash = require('password-hash');
app.get("/signup", routes.signup);
您可能尝试的另一件事是使用全局变量,这意味着从passwordHash中删除var。不确定这是否适用于快递,但值得检查。
passwordHash = require('password-hash');
app.get("/signup", routes.signup);
如果有帮助,请告诉我。
答案 3 :(得分: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;