#javascript #node.js #express
#javascript #node.js #выразить
Вопрос:
Я создаю веб-сайт discord bot dashboard с помощью express, и я получаю эту ошибку, но, похоже, могу ее исправить: TypeError: не удается прочитать свойство ‘access_token’ неопределенного значения. Когда я запускаю код, все полностью работает, но ошибка все еще появляется.
Это вся моя страница:
const router = express.Router();
const OAuthClient = require('disco-oauth');
const AuthClient = new OAuthClient(
'732404499209256980',
'bqX8W8RXQl-lqgbjxVqys7dlRcUzUZAk'
);
const inviteURL ='https://discord.com/oauth2/authorize?client_id=732404499209256980amp;permissions=2147479255amp;scope=bot',
loginURL = `https://discord.com/api/oauth2/authorize?client_id=732404499209256980amp;redirect_uri=https://valbot-testing.valblaze.repl.co/authamp;response_type=codeamp;scope=identify guilds`;
AuthClient.setRedirect(`https://valbot-testing.valblaze.repl.co/auth`);
AuthClient.setScopes('identify', 'guilds');
router.use(async (req, res, next) => {
const key = req.cookies.get('key');
res.locals.user = await AuthClient.getUser(key);
next();
});
router.get('/', (req, res) => res.render('home'));
router.get('/dashboard', (req, res) => {
res.render('dashboard/index');
});
router.get('/invite', (req, res) => res.redirect(inviteURL));
router.get('/login', (req, res) => res.redirect(loginURL));
router.get('/auth', async (req, res) => {
const key = await AuthClient.getAccess(req.query.code);
res.cookies.set('key', key);
res.redirect('/dashboard');
});
router.get('*', (req, res) => res.render(`errors/404.pug`));
module.exports = router;
но, похоже, это код, нарушающий его:
const key = req.cookies.get('key');
res.locals.user = await AuthClient.getUser(key);
всякий раз, когда я вызываю await AuthClient.getUser(key)
его breaks, и я пытался записать ключ в консоль, он работает нормально, как обычный ключ.
Есть ли что-нибудь, чего мне не хватает?
Ответ №1:
Происходит то, что файл cookie ‘key’ может присутствовать не всегда, особенно если вы еще не вошли в систему. По этой причине вы должны защитить код таким образом:
const key = req.cookies.get('key');
res.locals.user = key ? await AuthClient.getUser(key) : null;