1

在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

回答

2

您的文章的標題表明您的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