2016-04-21 7 views
1

Я изучаю, как настроить сервер на OpenShift, который использует node, express, GraphQL и Postgres, и мне нужна помощь.Настройка graphQL на OpenShift

При попытке настроить сервер 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 
})); 
... 

Я использую шаблон server.js предоставленный OpenShift так вышеуказанных изменений :

... 
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.

Я новичок в этом, но здесь есть некоторые предположения относительно того, что это, возможно, придется делать с:

  1. Подключение к базе данных
  2. Недостающие зависимости

    1. Подключение к database: У меня есть 2 файла конфигурации json. Один для моей локальной машины, который подключается с помощью туннеля SSH для переадресации портов в OpenShift. Это прекрасно работает. Другая - для производства. В нем у меня есть все строки для имени базы данных, пользователя, порта, хоста и пароля, которые предоставил мне OpenShift. Я использую библиотеку config, которая смотрит на NODE_ENV, чтобы решить, какой конфигурационный файл json использовать. Я установил переменную NODE_ENV в OpenShift для производства. Когда я его запрашиваю, он показывает все правильные строки. Есть что-то еще, что мне нужно установить?

    2. Отсутствие зависимостей. Чтобы сохранить его в чистоте, я сохраняю свой внутренний код отдельно от моего кода переднего плана. Таким образом, внутренний код содержит только экспресс, графику, сиквелз, конфиг и файл pg. Мне нужно что-то еще, чтобы страница graphiql работала? Кроме того, я поместил все/node_modules/в файл .gitignore - я предположил, что OpenShift устанавливает их post push. Правильно ли это было?

бы признателен за любую помощь!

ответ

1

OK - Я решил его, выполнив следующие действия:

в OpenShift Cli инструменты включить журналы ошибок

rhc tail -a <yourappname> 

Это даст вам некоторые подсказки. В моем случае это было сообщение из express-graphql «неразрешенное обещание». После исследования я обнаружил, что если установить и сохранить эс-обещание и добавить эту строку в верхней части файла server.js:

require ('es6-promise').polyfill(); 

Надежда, что помогает кто-то другой!

Смежные вопросы