使用vue-apollo.js或vue.config.js通过https服务graphql apollo服务器吗?

时间:2019-01-19 23:01:06

标签: vue.js graphql apollo vue-apollo

我肯定缺少明显或简单的内容,但是我只是想不出如何使graphql服务器在https上运行。

我使用Vue CLI 3创建了一个测试应用程序(vue create test-app)。我使用CLI添加了vue-apollo插件(vue添加了apollo)。

在vue-apollo.js的示例代码中,它提到:

const defaultOptions = {
  // You can use 'https' for secure connection (recommended in production)
  httpEndpoint,...

但是我看不到如何调整该选项。我以为您可以通过该文件中的选项或通过vue.config.js进行操作-但也许我错了吗?

在vue.config.js中,我有:

module.exports = {
  pluginOptions: {
    apollo: {
      enableMocks: false,
      enableEngine: false
    }
  },
  devServer: {
    disableHostCheck: true,
    https: true
  }
}

devServer在设置了该选项的端口8000上运行https。

我想念什么?我认为这可能与以下问题有关:https://github.com/Akryum/vue-cli-plugin-apollo/issues/52

但这似乎已解决。但是也许vue.config.js中没有选项可以按照我想要的方式影响服务器。有没有办法通过vue-apollo插件在某个地方传递选项来做到这一点?还是我不知道其他方法。

vue-apollo.js中的构造函数如下:

export function createProvider (options = {}) {
  // Create apollo client
  //console.log("CREATE PROVIDER CALLED")
  const { apolloClient, wsClient } = createApolloClient({
    ...defaultOptions,
    ...options,
  })
  apolloClient.wsClient = wsClient

  // Create vue apollo provider
  const apolloProvider = new VueApollo({
    defaultClient: apolloClient,
    defaultOptions: {
      $query: {
        // fetchPolicy: 'cache-and-network',
      },
    },
    errorHandler (error) {
      // eslint-disable-next-line no-console
      console.log('%cError', 'background: red; color: white; padding: 2px 4px; border-radius: 3px; font-weight: bold;', error.message)
    },
  })
  APOLLO_CLIENT = apolloClient;
  return apolloProvider;
}

然后在main.js中将其称为:

import Vue from 'vue'
import './plugins/vuetify'
import App from './App.vue'
import router from './router'
import { createProvider } from './vue-apollo'

Vue.config.productionTip = false

new Vue({
  router,
  apolloProvider: createProvider(),
  render: h => h(App)
}).$mount('#app')

我也在apollo-server / server.js中设置了Express中间件:

import path from 'path'
import express from 'express'

//const distPath = path.resolve(__dirname, '../dist')
//console.log("DIST PATH: " + distPath);


export default app => {

    console.log("GOT HERE")
    app.post('/api', function (req, res, next) {
        res.send('API: ' + '');
      })
    //app.listen(443)
    //app.use(express.static(distPath))
}

但这只是设置一个端点来接收POST呼叫。

我尝试使用Express在其中创建一个新的httpsServer,但是也没有任何效果。我在这里遵循指南:Apollo SSL Support

有什么想法吗?

0 个答案:

没有答案