Как получить доступ к переменной в другом файле в узле JS - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть 2 файла: export.js и server.js

Я пытаюсь получить доступ к переменной в export.js в server.js, но я не определен.

Обратите внимание, что я использую knexjs и дал ему имя 'db';

export.js

let count;

const livePending = (db) => {
  db('cart')
  .count('id').where('status','=','Pending')
    .then(data => {
      if (data[0]) {
        count = data[0].count;
      }
    }).catch(err => res.status(400).send('DB Connection failed!'));
}

module.exports = {
    livePending: livePending,
    pCount: count
}

server.js

[...]
const anotherFile = require('./export');
anotherFile.livePending(db);
console.log(import.pCount);

Когда я пытаюсь установить консоль в журнале внутриФункция livePending в export.js, я получаю желаемое количество, которое равно 1.

Причина, по которой я это делаю, состоит в том, чтобы уменьшить количество строк кода в моем server.js.Если я выполняю ту же функцию в моем server.js, я получаю правильный результат.

1 Ответ

0 голосов
/ 14 февраля 2019

Я создал приложение для небольших узлов, чтобы протестировать вариант вашего кода.Два важных вывода:

1.

const import = require('./export');

import зарезервировано (а также export).Узел выдаст SyntaxError: Unexpected token, если вы попытаетесь использовать любое из них в качестве имени переменной.

2.

console.log(import.count);

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

Чтобы прояснить ситуацию, вот небольшая демонстрация, чтобы показать эти концепции в действии.

export.js

let count;

const setCount = num => {
  count = num;
}

const getCount = () => count;

// Shortcut: If the key: value is the same, we can just omit the value 
module.exports = {
  setCount,
  getCount
}

server.js

const ex = require('./export');
ex.setCount(5);
console.log(ex.getCount()); // 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...