Express GraphQL 必须提供查询字符串。

Posted

技术标签:

【中文标题】Express GraphQL 必须提供查询字符串。【英文标题】:Express GraphQL must provide query string. 【发布时间】:2018-12-30 19:11:38 【问题描述】:

我是 AWS lambda 和 GraphQL 的新手。我正在尝试将 Express GraphQL 应用程序部署到 AWS Lambda。

index.js 文件

  const awsServerlessExpress = require("aws-serverless-express");
  var express = require("express");
  var graphqlHTTP = require("express-graphql");
  var  buildSchema  = require("graphql");

  // Construct a schema, using GraphQL schema language
  var schema = buildSchema(`
    type Query 
         hello: String
        
      `);

 // The root provides a resolver function for each API endpoint
 var root = 
  hello: () => 
    return "Hello world!";
  
 ;

 var app = express();
 app.use(
         "/",
         graphqlHTTP(
             schema: schema,
             rootValue: root,
             graphiql: true
           )
      );

   const server = awsServerlessExpress.createServer(app);

   exports.handler = (event, context) => 
        awsServerlessExpress.proxy(server, event, context);



 Expected Output:

但在 AWS Lambda 控制台中执行 AWS Lambda 函数时出错。

Current Output:

【问题讨论】:

嘿,不是解决你的问题,但也许使用Apollo Server 会更容易一些,因为你不需要所有的快递。 嗨,我想使用 express-GraphQL 将 GraphQL 服务器安装在“/”端点上。 @Herku 这个错误的上下文是什么?当您的请求不包含查询时会发生此结果(因此既不在 get ?query=... 也不在 post data "query": "... 中)。如果您在没有必要参数的情况下运行标准 AWS lambda 测试,您可能会收到此响应。另外我不确定 AWS lambda 版本是否能够提供 GraphiQL。 你好@srinivas,你解决了这个错误吗?将 lambda 函数部署到 AWS 后,我面临同样的错误 【参考方案1】:

您的服务器很好。我认为问题在于您的查询。它在某种程度上是错误的。由于您没有包括它,我们真的无法确定。但是如果你的请求有一个

,你可能会得到更好的结果
Content-Type: 'application/graphql'

Content-Type: 'application/json'

你让请求体看起来像这样:

"query": "hello" 

注意引号的位置;如果这是 JSON,则必须像 JSON 一样格式化。

【讨论】:

你好@Rap,我也试过在我的本地机器上使用"query": "hello" 。它在我的本地服务器上完美运行。当我在 AWS 上为 lambda 函数上传相同的 zip 文件时,我遇到了“必须提供查询字符串”的错误。你能指导我到底发生了什么吗?

以上是关于Express GraphQL 必须提供查询字符串。的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到错误“必须提供查询字符串”。快递-graphql?

GraphQL“必须提供查询字符串” graphql-tag react-apollo

GraphQL 查询必须是字符串

GraphQL-js Node/Express:如何在 GraphQL 查询中传递字符串对象?

Apollo Server, Graphql - 必须提供查询字符串

GraphQL 文件上传纯 JS “必须提供查询字符串”。