Использование глобальной переменной в TypeScript - Node Express - PullRequest
0 голосов
/ 03 апреля 2020

Использование машинописи в узле express. Возникли проблемы с использованием глобальной переменной. Хотите использовать одну и ту же глобальную переменную массива tokenList: tokList в импортированном модуле, текущем модуле и промежуточном программном обеспечении. Перепробовал много способов, как это не работает Как я могу это сделать?

Предоставил мой файл apirouter ниже. Хотите использовать переменную tokenList: tokList в текущем файле apirouter и в импортированном файле users.ts и в tokenchecker. js middleware.

import express from 'express';
import { permissionsRoute } from './permissions';
import { rolesRoute } from './roles';
import { usersRoute } from './users';
import usersList from '../../mocks/users.json';

// import config from  './config.json';


const jwt = require('jsonwebtoken');  
const config = require('./config');
//const config = require('./config');
//const tokenList:any[]=new Array();
// interface TokenResponse {
//     status: string;
//     token: string;
//     refreshToken :string;
//   }

interface tokList {
    [key: string]: any;
}

var tokenList:tokList=[];
// using the middleware below
apiRouter.use(require('./tokenChecker'))

Предоставлен файл промежуточного программного обеспечения tokenChecker. js ниже

const jwt = require('jsonwebtoken')
const config = require('./config')

module.exports = (req,res,next) => {
  const token = req.body.token || req.query.token || req.headers['x-access-token']
  // decode token
  if (token) {
    // verifies secret and checks exp
    jwt.verify(token, config.secret, function(err, decoded) {
        if (err) {
            return res.status(401).json({"error": true, "message": 'Unauthorized access.' });
        }
      req.decoded = decoded;
      next();
    });
  } else {
    // if there is no token
    // return an error
    return res.status(403).send({
        "error": true,
        "message": 'No token provided.'
    });
  }
}

user.ts машинописный файл ниже

import express from 'express';
// @ts-ignore squash JSON compiler warning
import users from '../../mocks/users.json';

export const usersRoute: express.Handler = (_req, res) => {
  res.status(200).json(users);
};

1 Ответ

0 голосов
/ 06 апреля 2020

Необходимо создать отдельный модуль для экспорта переменных. импорт в модули, для которых требуется глобальная переменная Благодаря комментариям jfriend00

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...