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-js Node/Express:如何在 GraphQL 查询中传递字符串对象?