将 Apollo Express 服务器部署到 Heroku 时出现问题:“缺少 GET 查询。”
Posted
技术标签:
【中文标题】将 Apollo Express 服务器部署到 Heroku 时出现问题:“缺少 GET 查询。”【英文标题】:Problem deploying Apollo Express server to Heroku: "GET query missing." 【发布时间】:2019-09-26 11:53:09 【问题描述】:我使用 Apollo Express 编写了一个简单的 GraphQL 服务器并将其部署到 Heroku。在处理了一些 Procfiles 之类的问题后,它构建好了。
当我点击主 URL https://limitless-atoll-59109.herokuapp.com 时出现错误
无法获取/
好的,那么我认为 Express 服务器一定只是在 graphql 端点上寻找 get 。但是当我点击https://limitless-atoll-59109.herokuapp.com/graphql 时,我得到了
GET 查询丢失。
我需要在 url 中包含端口吗?我在代码中正确设置了端口
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[路由器]: at=info method=GET path="/graphql" 主机=limitless-atoll-59109.herokuapp.com request_id=b6171835-aac4-4b45-8a7b-daebbb3167ed fwd="139.47.21.74" dyno=web.1 连接=0ms 服务=900ms 状态=400 字节=196 协议=https
感谢您的帮助!
【问题讨论】:
【参考方案1】:如果您使用的是 apollo 服务器,您可以在生产环境中启用它:
const server = new ApolloServer(
typeDefs,
resolvers,
introspection: true,
playground: true,
);
【讨论】:
【参考方案2】:答案是是一个以/graphql
结尾的网址。但是,当您从浏览器中点击该 URL 时,它会尝试加载 Playground,但会失败,因为 Playground 在生产环境中默认处于禁用状态。
但是,您可以从客户端应用程序对该网址进行 graphql 调用,它工作正常。
【讨论】:
以上是关于将 Apollo Express 服务器部署到 Heroku 时出现问题:“缺少 GET 查询。”的主要内容,如果未能解决你的问题,请参考以下文章
如何将使用@nuxtjs/apollo 模块的nuxt 应用程序部署到heroku?
如何将 Express REST 层放在 Apollo GraphQL 服务器之上?
在 apollo-server-express 中增加身体限制大小
在 Heroku 上部署 react/apollo-server 应用程序