Проект запускается в докере в режиме разработки.
Кусок из docker-compose:
api:
...
volumes:
- ./api/src:/node/src
...
Т.е. каталог ./api/src (с исходниками) монтируется в каталог /node/src внутри контейнера (хотя в контейнере в этом каталоге в принципе то же самое, но если я меняю src/чегонибудь, то оно мометально появляется в контейнере, думаю, понятна суть).
Контейнер запускает команду npm run dev в каталоге /node, которая запускает команду ts-node-dev src/index.ts
Вот кусок src/index.ts:
import { typeDefs } from "./typeDefs";
import { makeAugmentedSchema } from "neo4j-graphql-js";
...
console.log("typeDefs not null", typeDefs != null);
const schema = makeAugmentedSchema({
typeDefs,
...
Вот кусок src/typeDefs.ts:
import { gql } from "apollo-server";
console.log("typeDefs exporting");
export const typeDefs = gql`
...
Т.е. вроде всё легко и просто. Запускается файл index.ts, запускает файл typeDefs.ts. Этот файл экспортирует строчку, которая потом передаётся в makeAugmentedSchema. Проще некуда.
И оно работает примерно в 50% случаев, выводя логи вида
api_1 | typeDefs exporting
api_1 | typeDefs not null true
Но в других 50% случаев оно пишет
api_1 | typeDefs not null false
api_1 | Error: Must provide typeDefs
api_1 | at Object.makeAugmentedSchema (/node/node_modules/neo4j-graphql-js/dist/index.js:347:24)
api_1 | at ...
api_1 | [ERROR] 02:21:24 Error: Must provide typeDefs
Т.е. в файл typeDefs.ts оно даже не заходит (причём ошибку это почему-то не вызывает). Но импортируемая переменная typeDefs принимает значение null и дальше makeAugmentedSchema понятное дело не срабатывает и всё валится. Никаких других ошибок при этом не показывает, соседние контейнеры (оно через docker-compose запускается) запускаются нормально.
При этом достаточно перезапустить docker контейнер и оно со второго раза обычно начинает работать. Но не всегда.
Куда посоветуете копать?