Сервер Apollo / Express не работает в среде nx.dev - PullRequest
2 голосов
/ 09 июля 2020

Я пытаюсь создать простой серверный модуль graphql, используя apollo-server- express.

Выполнение этого в приложении expressJS ( Github repo ) - это работает должным образом:

Выполнение запроса

query {
    search {
        result
    }
}

на локальном хосте: 4000 / graphql возвращает result как ожидалось.

преобразователь

module.exports = {
  Query: {
    search: async (obj, { name, value }) => {
      return 'result'
    }
  }
}

Теперь я хотел бы использовать этот expressJS бэкэнд в среде nx.dev ( Github repo ). Я настроил здесь то же самое, но запуск сервера и выполнение запроса на игровой площадке graphQL возвращает null.

Я не вижу, что идет не так.

Это мой структура:

main.ts

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

const typeDefs = require('./graphql/types')
const resolvers = require('./graphql/resolvers')

const app = express();

const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });

app.listen({ port: 4000 }, () =>
  console.log(`? Server ready at http://localhost:4000${server.graphqlPath}`)
)

структура

+-- graphql
|   +-- author
|   |   +-- author.resolvers.js
|   |   +-- author.graphql
|   +-- search
|   |   +-- search.resolvers.js
|   |   +-- search.graphql
|   +-- resolvers.js <<< Merges all `*.resolvers.*` files
|   +-- types.js <<< Merges all `*.graphql` files

резолверы. js

const path = require('path');
const { mergeResolvers } = require('@graphql-tools/merge');
const { loadFilesSync } = require('@graphql-tools/load-files');

const resolversArray = loadFilesSync(path.join(__dirname, "./**/*.resolvers.*"));
module.exports = mergeResolvers(resolversArray);

типы. js

const path = require('path');
const { loadFilesSync } = require('@graphql-tools/load-files');
const { mergeTypeDefs } = require('@graphql-tools/merge');

const typesArray = loadFilesSync(path.join(__dirname, './**/*.graphql'))

module.exports = mergeTypeDefs(typesArray, { all: true })

graphql / search / search.graphql

type Query {
  search(name: String, value: String): [String]
}

graphql / search / search.resolvers. js

module.exports = {
  Query: {
    search: async (obj, { name, value }) => {
      return 'result'
    }
  }
}
...