Javascript Graphql upload getting";‘中的JSON无效;运营’;“多部分字段”;

Javascript Graphql upload getting";‘中的JSON无效;运营’;“多部分字段”;,javascript,graphql-js,apollo-server,Javascript,Graphql Js,Apollo Server,我一直在努力弄清楚如何让文件上传在graphql中工作 这是我的基本实现 // eslint-disable-next-line import/no-extraneous-dependencies const { ApolloServer, gql } = require('apollo-server-express') // eslint-disable-next-line import/no-extraneous-dependencies const express

我一直在努力弄清楚如何让文件上传在graphql中工作

这是我的基本实现


// eslint-disable-next-line import/no-extraneous-dependencies
const { ApolloServer, gql }             = require('apollo-server-express')
// eslint-disable-next-line import/no-extraneous-dependencies
const express                      = require('express')


const typeDefs = gql`  
  type File {
    filename: String!
    mimetype: String!
    encoding: String!
  }
  
  type Query {
    _ : Boolean
  }
  
  type Mutation {
    singleUpload(file: Upload!): File!,
    singleUploadStream(file: Upload!): File!
  }
`;

const resolvers = {
  Mutation: {
    singleUpload: (parent, args) => {
      return args.file.then(file => {
        const {createReadStream, filename, mimetype} = file

        const fileStream = createReadStream()

        return file;
      });
    },
    singleUploadStream: async (parent, args) => {
      const file = await args.file
      const {createReadStream, filename, mimetype} = file
      const fileStream = createReadStream()

      const uploadParams = {Bucket: 'apollo-file-upload-test', Key: filename, Body: fileStream};

      console.log(result)


      return file;
    }
  },
};


const server = new ApolloServer({ typeDefs, resolvers });

const app = express()
server.applyMiddleware({ app })

const port = Number(process.env.API_PORT || 4000)

app.listen({ port }, () => {
    // eslint-disable-next-line no-console
    console.debug(`There error message is exactly right, the JSON in the 
operations
field in the multipart request is invalid. Here is the JSON you are attempting to use:

{ "query": "mutation ($file: Upload!) { singleUploadStream
(file: $file) { filename } }”, "variables": { "file": null } }

//eslint禁用下一行导入/无无关依赖项
const{ApolloServer,gql}=require('apollo-server-express')
//eslint禁用下一行导入/无无关依赖项
const express=require('express')
常量typeDefs=gql`
类型文件{
文件名:字符串!
mimetype:String!
编码:字符串!
}
类型查询{
_:布尔值
}
类型突变{
singleUpload(文件:上传!):文件!,
singleUploadStream(文件:Upload!):文件!
}
`;
常量解析程序={
突变:{
singleUpload:(父对象,参数)=>{
返回args.file.then(文件=>{
const{createReadStream,filename,mimetype}=file
const fileStream=createReadStream()
返回文件;
});
},
singleUploadStream:async(父级,参数)=>{
const file=await args.file
const{createReadStream,filename,mimetype}=file
const fileStream=createReadStream()
const uploadParams={Bucket:'apollo file upload test',Key:filename,Body:fileStream};
console.log(结果)
返回文件;
}
},
};
const server=new ApolloServer({typeDefs,resolvers});
const app=express()
applyMiddleware({app})
const port=编号(process.env.API|u port | 4000)
app.listen({port},()=>{
//eslint禁用下一行无控制台

console.debug(`那里的错误消息完全正确,多部分请求中
操作
字段中的JSON无效。以下是您尝试使用的JSON:

{“查询”:“变异($file:Upload!){singleUploadStream
(文件:$file){filename}},“变量”:{“file”:null}
首先,应使用JSON中的
\n
避免或转义换行:

{“query”:“mutation($file:Upload!){singleUploadStream(file:$file){filename}}”,“variables”:{“file”:null}
其次,对于
查询
值,您使用的是排版结尾引号字符
而不是正确的双引号字符

{“query”:“mutation($file:Upload!){singleUploadStream(file:$file){filename}}”,“variables”:{“file”:null}

@user3431327几个月过去了,你能接受答案或提供反馈吗。