Использование машинописи в узле 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);
};