我使用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
感谢您的帮助!
答案 0 :(得分:7)
如果您正在使用apollo服务器,则可以在生产环境中启用它:
const server = new ApolloServer({
typeDefs,
resolvers,
introspection: true,
playground: true,
});
答案 1 :(得分:1)
答案是,它是您想要的以/graphql
结尾的网址。但是,当您从浏览器中访问该URL时,它将尝试加载Playground,但由于在生产环境中默认禁用Playground而失败。
但是,您可以从客户端应用程序对该URL进行graphql调用,并且效果很好。