Наследование через Module.exports в узле - PullRequest
4 голосов
/ 06 февраля 2012

Это, наверное, я глупый ...

Я использую узел с экспрессом, и у меня есть отдельный файл, использующий экспорт для маршрутов. Кроме того, я требую и приведу к переменной пакет, который я установил с помощью npm.

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

внутри router.signup, у меня есть:

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

и выдает ошибку, сообщающую, что passwordHash не определен. Как я могу перейти к «наследованию» указанного требования call?

Ответы [ 4 ]

4 голосов
/ 07 февраля 2012

Вы также можете сделать следующее (скажем, этот код определен в app.js):

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

в маршрутах. Регистрация:

var passwordHash = module.parent.passwordHash; // from app.js
passwordHash.generate(req.form.username, {algorithm: 'sha512'});
1 голос
/ 06 февраля 2012

Вы можете перемещать переменные через переменную приложения, которая должна быть доступна везде.Попробуйте сделать что-то вроде этого:

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

Другая вещь, которую вы можете попробовать, это использовать глобальную переменную, что означает удаление var из passwordHash.Не уверен, что это сработает для экспресс, но стоит проверить.

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

Дайте мне знать, если это помогло.

1 голос
/ 06 февраля 2012

Отдельные файлы имеют разные области видимости, поэтому, если вы хотите использовать passwordHash внутри вашего другого файла, вам нужно также вызвать require('password-hash'); в этом файле.

0 голосов
/ 16 октября 2013

Я знаю, что этот вопрос старый, но это помогло бы мне: используйте экспорт!

Так что, если у меня есть файл 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...