生产时禁用graphiql

spo*_*bob 5 apollo-server

如何在生产中禁用graphiql但仍能在生产中访问它?

使用express-graphql,我们可以做类似的事情

app.use('/graphql', graphqlHTTP({
  schema: MySessionAwareGraphQLSchema,
  graphiql: process.env.NODE_ENV === 'development',
}));
Run Code Online (Sandbox Code Playgroud)

使用apollo服务器,我的设置是

import {graphqlExpress, graphiqlExpress} from 'graphql-server-express'

const app = new Express()

app
  .all('/graphql', bodyParser.json())
  .all('/graphql', graphqlExpress({
      schema
  )
  .all('/graphiql', graphiqlExpress({
      endpointURL: 'http://localhost/graphql'
    })
  )
Run Code Online (Sandbox Code Playgroud)

我找不到传递给NODE_ENV来启用/禁用graphiql的方法.

Fir*_*lan 2

您的意思是仅在开发中启用 graphiql 并在生产中禁用它。如果是这样,只需排除 /graphiql 处理程序

if (process.env.NODE_ENV === 'development') {
  app.all(
    '/graphiql',
    graphiqlExpress({
      endpointURL: '/graphql',
    }),
  );
}
Run Code Online (Sandbox Code Playgroud)