首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过节点中的Module.exports继承

通过节点中的Module.exports继承
EN

Stack Overflow用户
提问于 2012-02-06 12:11:32
回答 4查看 3.2K关注 0票数 4

可能是我太傻了..。

我将node与express一起使用,并且我有一个单独的文件,用于路由的exports。在它上面,我需要并强制转换为一个变量,这是我使用npm安装的包。

代码语言:javascript
复制
var passwordHash = require('password-hash');
app.get("/signup", routes.signup);

在routes.signup内部,我有:

代码语言:javascript
复制
passwordHash.generate(req.form.username, {algorithm: 'sha512'})

它抛出一个错误,说passwordHash是未定义的。我怎样才能“继承”所说的请求调用呢?

EN

回答 4

Stack Overflow用户

发布于 2012-02-07 21:28:07

您还可以执行以下操作(假设此代码是在app.js中定义的):

代码语言:javascript
复制
module.passwordHash = require('password-hash');
app.get("/signup", routes.signup);

在routes.signup中:

代码语言:javascript
复制
var passwordHash = module.parent.passwordHash; // from app.js
passwordHash.generate(req.form.username, {algorithm: 'sha512'});
票数 4
EN

Stack Overflow用户

发布于 2012-02-06 12:51:58

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

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 01:23:46

你可以通过app变量来移动你的变量,这个变量应该在任何地方都可以访问。试着这样做:

代码语言:javascript
复制
app.passwordHash = require('password-hash');
app.get("/signup", routes.signup);

您可以尝试的另一件事是使用全局变量,这意味着从passwordHash中删除var。不确定这是否适用于express,但它值得一查。

代码语言:javascript
复制
passwordHash = require('password-hash');
app.get("/signup", routes.signup);

如果有帮助,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9155493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档