将Apollo Express服务器部署到Heroku时出现问题:“缺少查询”。

时间:2019-05-08 17:16:46

标签: node.js heroku graphql apollo apollo-server

我使用Apollo Express编写了一个简单的GraphQL服务器,并将其部署到Heroku。在弄乱了Procfiles之类的东西之后,它构建成功。

当我点击主URL https://limitless-atoll-59109.herokuapp.com时收到错误消息

  

无法获取/

好的,那么我认为Express服务器必须只是在graphql端点上寻找获取。但是当我按下https://limitless-atoll-59109.herokuapp.com/graphql时,我得到了

  

缺少查询。

我需要在网址中包含端口吗?我已经在代码中正确设置了端口

const PORT = process.env.PORT || 4000

  app.listen({port: PORT}, () =>

  console.log(`Server ready at http://localhost:${PORT}${server.graphqlPath}`)
  );

但是我认为访问Heroku上的服务器时不需要包括它,是吗?

对于它的价值,这是错误日志中的错误

  

019-05-08T17:07:41.492327 + 00:00 heroku [router]:at = info method = GET   path =“ / graphql” host = limitless-atoll-59109.herokuapp.com   request_id = b6171835-aac4-4b45-8a7b-daebbb3167ed fwd =“ 139.47.21.74”   dyno = web.1 connect = 0ms服务= 900ms status = 400字节= 196   协议= https

感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

如果您正在使用apollo服务器,则可以在生产环境中启用它:

const server = new ApolloServer({
  typeDefs,
  resolvers,
  introspection: true,
  playground: true,
});

答案 1 :(得分:1)

答案是,它您想要的以/graphql结尾的网址。但是,当您从浏览器中访问该URL时,它将尝试加载Playground,但由于在生产环境中默认禁用Playground而失败。

但是,您可以从客户端应用程序对该URL进行graphql调用,并且效果很好。