可能是我太傻了..。
我将node与express一起使用,并且我有一个单独的文件,用于路由的exports。在它上面,我需要并强制转换为一个变量,这是我使用npm安装的包。
var passwordHash = require('password-hash');
app.get("/signup", routes.signup);在routes.signup内部,我有:
passwordHash.generate(req.form.username, {algorithm: 'sha512'})它抛出一个错误,说passwordHash是未定义的。我怎样才能“继承”所说的请求调用呢?
发布于 2012-02-07 21:28:07
您还可以执行以下操作(假设此代码是在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'});发布于 2012-02-06 12:51:58
不同的文件有不同的作用域,所以如果您想在其他文件中使用passwordHash,那么您也需要在该文件中调用require('password-hash');。
发布于 2012-02-07 01:23:46
你可以通过app变量来移动你的变量,这个变量应该在任何地方都可以访问。试着这样做:
app.passwordHash = require('password-hash');
app.get("/signup", routes.signup);您可以尝试的另一件事是使用全局变量,这意味着从passwordHash中删除var。不确定这是否适用于express,但它值得一查。
passwordHash = require('password-hash');
app.get("/signup", routes.signup);如果有帮助,请告诉我。
https://stackoverflow.com/questions/9155493
复制相似问题