我正在學習如何在使用node,express,GraphQL和Postgres的OpenShift上設置服務器,我需要一些幫助。在OpenShift上設置graphQL
當試圖建立GraphQL服務器我一直在關注這個和它的作品在我的本地機器上:
import Express from 'express';
import GraphQL from 'express-graphql';
import Schema from './db/GQLschema';
const app = Express();
app.use('/graphql', GraphQL({
schema: Schema,
pretty: true,
graphiql: true
}));
...
我使用OpenShift提供這樣的上述變化的server.js模板:
...
self.app = express();
self.app.configure(function() {
self.app.use('/public', express.static(__dirname+'/public'));
self.app.use('/graphql', GraphQL({
schema: Schema,
pretty: true,
graphiql: true
}));
});
...
但推到OpenShift時,這不起作用。我得到'內部服務器錯誤'而不是graphiql接口。
我是新來的這一點,但這裏有一些猜測到它可能與做:
- 連接到數據庫
缺少依賴
連接到數據庫:我有2個json配置文件。一個用於使用端口轉發SSH隧道連接到OpenShift的本地機器。這工作正常。另一個是生產。在其中,我擁有OpenShift爲我提供的所有數據庫名稱,用戶,端口,主機和密碼的字符串。我正在使用配置庫查看NODE_ENV來決定使用哪個配置json文件。我將OpenShift上的NODE_ENV變量設置爲生產。當我查詢它時,它顯示所有正確的字符串。還有什麼我需要設置?
缺少依賴關係:爲了保持整潔,我將後端代碼與前端代碼分開。所以後端代碼只安裝了express,graphql,sequelize,config和pg等東西。我需要其他東西來使graphiql頁面工作嗎?另外,我將所有/ node_modules /放在.gitignore文件中 - 我假設OpenShift在推送後安裝它們。這是正確的做法嗎?
希望得到任何幫助!