首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生产环境中禁用graphiql

在生产环境中禁用graphiql
EN

Stack Overflow用户
提问于 2017-07-23 20:04:36
回答 2查看 3K关注 0票数 6

如何在生产环境中禁用graphiql,但在开发过程中仍然可以访问它?

使用express-graphql,我们可以这样做

代码语言:javascript
复制
app.use('/graphql', graphqlHTTP({
  schema: MySessionAwareGraphQLSchema,
  graphiql: process.env.NODE_ENV === 'development',
}));

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

代码语言:javascript
复制
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'
    })
  )

而且我找不到一种方法来传递给NODE_ENV来启用/禁用graphiql。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-25 15:51:24

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

代码语言:javascript
复制
if (process.env.NODE_ENV === 'development') {
  app.all(
    '/graphiql',
    graphiqlExpress({
      endpointURL: '/graphql',
    }),
  );
}
票数 2
EN

Stack Overflow用户

发布于 2017-09-22 00:14:46

这是我在koa设置中的设置

代码语言:javascript
复制
export default () => (
  convert(graphqlHTTP((req, res, ctx) => ({
    schema: require('app/graphql/schema'),
    context: {
      ...ctx.app.context,
      ...ctx.state,
    },

    // Enable graphql for development environments only
    graphiql: config.environment === 'development',


    formatError: error => ({
      message: error.message,
      stack: error.stack,
      locations: error.locations,
    }),
  })))
)

注意:graphiql: config.environment === 'development',从这里你可以传递一个自定义环境变量并用它启动你的应用程序。

代码语言:javascript
复制
ENABLE_GRAPHIQL=true NODE_ENV=production npm start_my_server

根据您管理环境变量的方式,可以将表达式更改为

代码语言:javascript
复制
graphiql: myEnv.ENABLE_GRAPHIQL || myEnv.environment === 'development', 

FWIW您不应该在生产环境中启用graphiql

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45264880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档