Реакция :: Ошибка: ошибка GraphQL: невозможно прочитать свойства 'headers' из undefined - PullRequest
0 голосов
/ 13 апреля 2020

Я развернул свое приложение на netlify.

На локальном сервере я мог бы оставить комментарий.

Но в производственном режиме при отправке комментария появляется

. «Ошибка: ошибка GraphQL: невозможно прочитать свойства« заголовки »из неопределенного».

Я пытался решить эту проблему многими способами, но не смог ее решить.

Мне кажется, проблема в моем сервере GraphQL на Heroku.

check-auth. js

const { AuthenticationError } = require('apollo-server');

const jwt = require('jsonwebtoken');
const { SECRET_KEY } = require('../config');

module.exports = (context) => {
  // context = { ... headers }
  const authHeader = context.req.headers.authorization;

  if (authHeader) {
    // Bearer ....
    const token = req.headers.authorization || '';
   //I tried. const token = req.headers["authorization"];
    if (token) {
      try {
        const user = jwt.verify(token, SECRET_KEY);
        return user;
      } catch (err) {
        throw new AuthenticationError('Invalid/Expired token');
      }
    }
    throw new Error("Authentication token must be 'Bearer [token]");
  }
  throw new Error('Authorization header must be provided');
};

Оставить комментарий может только зарегистрированный пользователь.

Мой идентификатор пользователя сохраняется на локальном сервере после входа пользователя. Ключ - jwtToken.

1 Ответ

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

Это опечатка, или вы фактически пропускаете объект контекста при получении токена?

const token = context.req.headers.authorization || ''; 

Проверьте строку выше в вашем коде и зачем она вам нужна, если она уже есть в authHeader константа.

И ваш токен в идеале должен находиться внутри context.req.headers ['x-token'] или req.headers ['token'], в зависимости от того, как вы проходите.

...