Утечка памяти в шутку с сервером apollo

#node.js #jestjs #apollo-server #ts-jest

Вопрос:

У нас произошла утечка памяти во время наших внутренних тестов сервера apollo. Я пытался найти причину, используя jest --detectLeaks и изолируя части приложения.

Если я удалю приложение и выполню только несколько тестов с нашими типами, определенными в том же файле, что и наш сервер test apollo, тесты будут работать нормально:

 const typeDefs = {
  ...
}

const resolvers = {
  ...
}

export const testServer = new ApolloServer({
  typeDefs: typeDefs,
  resolvers: resolvers,
  ...
});
 

Если я перенесу символы ввода в отдельный файл и импортирую их, как мы обычно делаем, утечка памяти вернется:

 import { typeDefs } from './typeDefs';

const resolvers = {
  ...
}

export const testServer = new ApolloServer({
  typeDefs: typeDefs,
  resolvers: resolvers,
  ...
});
 

Поэтому мой вопрос таков:

Кто-нибудь знает, в чем может быть проблема и как ее решить?

Если нет, то какова наиболее вероятная причина проблемы здесь? Это как — то связано с сервером apollo? Или это, скорее всего, проблема с шуткой или зависимостью, которую мы включили в наш проект?

Комментарии:

1. Пожалуйста, какую версию сервера Apollo вы используете?

2. @Marcus версия 3.3.0 apollo-сервер-лямбда

3. Хорошо, Apollo Server 3 внес некоторые изменения, включая необходимость в await некоторых вещах: apollographql.com/docs/apollo-server/migration Однако это не влияет на реализации лямбда, и я также не понимаю, почему импорт файла может вызвать такую проблему. Могу я спросить, как вы реализуете свои typedefs? Это так же, как и выше, но в отдельном файле?

4. Да, как и выше, но в отдельном файле. Символы ввода завернуты в gql`...` тег.