在谷歌云应用程序运行GraphQL服务器引擎

问题描述:

在node.js的在本地运行的终点,我用下面的代码片段在我app.js在谷歌云应用程序运行GraphQL服务器引擎

app.use('/graphql', (0, _expressGraphql2.default)(function (req) { 
    return { 
    schema: _schema2.default, 
    pretty: true, 
    context: _extends({ db: _models2.default }, (0, _isUser2.default)(req.headers['authorization'].split(' ')[1])) 
    }; 
})); 
app.listen(8080, function() { 

然而,我的应用程序没有收到来自任何回应端点尝试访问主机名:8080/graphql。这适用于我的本地机器。

+0

你的app.yaml文件是什么样子的?你的路线如何建立? –

+0

的app.yaml如下形式:运行时: 的NodeJS ENV:弯曲 服务:默认 – user3740387

+0

我想在原来的问题描述呈现的片段应该足够与路径澄清。我能够通过HTTPS访问端点:// .appspot-preview.com/graphql但如果我改变监听端口为8080以外的其他任何东西说3000,https://开头 .appspot-preview.com:3000/graphql不起作用。我已经增加了3000个来自任何来源的防火墙限制。由于缺乏任何文档,我可能会错过一个步骤。如果别的像端口转发或以其他方式设立的路线是必需的,会很高兴,如果你能引导我 – user3740387

您的文章的标题表明您的Node.js应用程序部署在谷歌应用程序引擎。无需担心在该环境中为您的实例分配IP地址。实例由App Engine管理,请求路由到您的应用程序也是如此。

要访问的应用程序,一旦部署到App Engine的,一个只需要解决它下面的模式:app_name.appspot.com。或者,对于自定义域,您可以按照“使用自定义域和SSL”指南[1]。如果需要,本文档的“为您的自定义域添加SSL”子章节可能会帮助您设置SSL。

该应用程序在默认情况下在App Engine上的8080端口进行侦听。这与外部调用者无关,他们只能使用以下模式:app_name.appspot.com来调用应用程序。这种情况适用于应用程序引擎环境。

[1] https://cloud.google.com/appengine/docs/flexible/nodejs/using-custom-domains-and-ssl

+0

它的工作原理,当应用程序侦听8080,但表示,其听时,3000甚至不添加有关规则后,在防火墙设置中。 – user3740387

+0

您的应用程序不会直接绑定到访客虚拟机上的端口,因为它在容器中运行。防火墙规则也只影响与虚拟机的直接连接,这不是您在使用App Engine服务时所做的。不要将App Engine与计算引擎混淆。据说,你可以根据[docs](https://cloud.google.com/appengine/docs/flexible/nodejs/runtime)设置PORT环境变量来更改应用程序在容器内侦听的端口#环境变量)。 – Adam

+0

请注意,无法从appspot.com前端转发端口3000--这是开放[公开问题](https://b.corp.google.com/issues/35898669)的主题。如果你需要这个功能(比如实现一个WebSocket API),暂时更好的选择是在[Container Engine](https://cloud.google.com/container-engine/)上托管你的服务器。 – Adam