收到错误 "errors":["message":"必须提供查询字符串。"]

Posted

技术标签:

【中文标题】收到错误 "errors":["message":"必须提供查询字符串。"]【英文标题】:Getting error "errors":["message":"Must provide query string."]收到错误 "errors":["message":"必须提供查询字符串。"] 【发布时间】:2020-11-30 05:49:30 【问题描述】:

我的 app.js 中有这个

const express = require('express');
const bodyParser = require('body-parser');
const graphqlHttp = require('express-graphql').graphqlHTTP;
const  buildSchema  = require('graphql');

const app = express();

app.use(bodyParser.json());

app.use(
  '/myproject',
  graphqlHttp(
    schema: buildSchema(`
        type TypeQuery 
            events: [String!]!
        
    
        type TypeMutation 
            createEvent(name: String): String
        
    
        schema   
            query: TypeQuery
            mutation: TypeMutation
        
    `),
    rootValue: 
      events: () => 
        return ['Cats', 'Sailing'];
      ,
      createEvent: (args) => 
        const eventName = args.name;
        return eventName;
      ,
    ,
    graphql: true,
  )
);

app.listen(3000);

当我在浏览器中输入“http://localhost:3000/myproject”时出现此错误:

"errors":["message":"Must provide query string."]

我错了什么? 在我的项目中,我所做的唯一更改是在 app.js 中。我没有前端。 谢谢

【问题讨论】:

【参考方案1】:

首先,我们应该使用带有 graphql 端点的端口 4000,以及 app.use("/graphql", ... 你得到了。错误,因为您没有正确加载 graphiql 游乐场!只需将graphql: true, 替换为graphiql: true, 即可?

这对我有用 http://127.0.0.1:4000/graphql :

const express = require("express");
const bodyParser = require("body-parser");
const graphqlHttp = require("express-graphql").graphqlHTTP;
const  buildSchema  = require("graphql");

const app = express();

app.use(bodyParser.json());

app.use(
  "/graphql",
  graphqlHttp(
    schema: buildSchema(`
      type TypeQuery 
        events: [String!]!
      

      type TypeMutation 
        createEvent(name: String): String
      

      schema 
        query: TypeQuery
        mutation: TypeMutation
      
    `),
    rootValue: 
      events: () => 
        return ["Cats", "Sailing"];
      ,
      createEvent: (args) => 
        const eventName = args.name;
        return eventName;
      ,
    ,
    graphiql: true,
  )
);

app.listen(4000, () => 
  console.log("server started on port 4000");
);

【讨论】:

以上是关于收到错误 "errors":["message":"必须提供查询字符串。"]的主要内容,如果未能解决你的问题,请参考以下文章

错误:响应不成功:收到状态码 400" Graphql

在尝试验证我的登录时,我收到错误“处理程序调度失败;嵌套异常是 java.lang.***Error”

我收到这个“错误:找不到 FFmpeg/avconv!”

如何实现“return true;”?错误:“消息端口在收到响应之前关闭。”

为啥我从 Postman 收到此 "message": "Internal server error"

提交表单时jsfiddle错误“错误”:“请使用POST请求”