#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`...`
тег.