Иногда не срабатывает import в Typescript
От: vsb Казахстан  
Дата: 08.06.21 20:32
Оценка:
Проект запускается в докере в режиме разработки.

Кусок из 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 контейнер и оно со второго раза обычно начинает работать. Но не всегда.

Куда посоветуете копать?
Отредактировано 08.06.2021 20:35 vsb . Предыдущая версия . Еще …
Отредактировано 08.06.2021 20:34 vsb . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.