Boa noite!
Estou tentando integrar o GraphQL como um plugin/módulo do Hapi.js em uma API.
Pelo que encontrei pela web, teria que usar o package npm graphql-server-hapi para fazer essa integração.
Segui a documentação do site da Apollo Developers http://dev.apollodata.com/tools/apollo-server/setup.html
Até o momento estou conseguindo renderizar já a GraphiQL UI na rota /graphiql. Porém ao acessar essa rota, a área de Docs fica como "No schema available" , e na coluna das respostas:
{
"statusCode": 404,
"error": "Not Found",
"message": "Not Found"
}
Dessa maneira não consigo fazer nenhuma requisição. No console aparece um erro do POST do formulário para /graphql? como se ele não encontra-se a rota. E no terminal tenho a seguinte mensagem:
node index.js
(node:8932) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Plugin graphql already registered in: http://localhost:3010
(node:8932) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
servidor rodando em http://localhost:3010
index.js da aplicação:
const Hapi = require('hapi')
const server = new Hapi.Server()
server.connection(require('./config/config').server)
server.register([
{
register: require('./modules/company')
},
{
register: require('./modules/graphQL')
}
], (err) => {
if (err) console.log('failed to load plugin: ', err)
}
)
server.start((err) => {
if(err) console.log(err)
console.log(`servidor rodando em ${server.info.uri}`)
})
graphQL/index.js:
const { graphqlHapi, graphiqlHapi } = require('apollo-server-hapi')
const { makeExecutableSchema } = require('graphql-tools')
const schema = require('./schema')
const resolvers = require('./resolvers')
const newSchema = makeExecutableSchema({
typeDefs: schema,
resolvers: resolvers
})
exports.register = function(server, options, next) {
server.register({
register: graphqlHapi,
options: {
path: '/graphql',
graphqlOptions: {
schema: schema
}
}
})
server.register({
register: graphiqlHapi,
options: {
path: '/graphiql',
graphiqlOptions: {
endpointURL: '/graphql'
}
}
});
next()
}
exports.register.attributes = {
pkg: require('./package.json')
}
Caso alguém puder ajudar agradeço.
Obrigado!