[英]Missing multipart field ‘operations’ with graphql-upload and apollo-server
您好,我正在嘗試使用 graphql 上傳文件以執行此操作,我有以下代碼:
索引.js
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const { graphqlUploadExpress } = require('graphql-upload');
async function startApolloServer() {
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
Mutation: {
singleUpload: async (parent, { file }) => {
const { createReadStream, filename, mimetype, encoding } = await file;
const stream = createReadStream();
const out = require('fs').createWriteStream(filename);
stream.pipe(out);
return { filename, mimetype, encoding, url: '' }
}
}
};
const server = new ApolloServer({
typeDefs:gql`
type Query {
hello: String!
}
type UploadedFileResponse {
filename: String!
mimetype: String!
encoding: String!
url: String!
}
type Mutation {
singleUpload(file: Upload!): UploadedFileResponse!
}`
, resolvers },{uploads:false});
await server.start();
const app = express();
app.use(graphqlUploadExpress({ maxFileSize: 1000000000, maxFiles: 10 }));
server.applyMiddleware({ app });
await new Promise(resolve => app.listen({ port: 4000 }, resolve));
console.log(`🚀 Server ready at http://localhost:4000${server.graphqlPath}`);
return { server, app };
}
startApolloServer()
為了調用端點,我使用了以下 curl:
curl localhost:4000/graphql \
-F operations='{ "query": "mutation ($file: Upload!) { singleUpload(file: $file) { filename } }", "variables": { "file": null } }' \
-F map='{ "0": ["variables.file"] }' \
-F 0=@/home/user/a.txt
但是當我執行此操作時,出現以下錯誤:
缺少多部分字段“操作”
如果我刪除app.use(graphqlUploadExpress({ maxFileSize: 1000000000, maxFiles: 10 }));
我又犯了一個錯誤
function deprecated(...args) { RangeError: 超出最大調用堆棧大小
但在這種情況下,我可以用正確的名稱編寫一個空文件。
關於如何完成這個 poc 以便使用 apollo-graphql 上傳文件的任何想法。
包.json
"dependencies": {
"apollo-server": "^2.25.2",
"apollo-server-express": "^2.25.2",
"graphql": "^15.5.1",
"graphql-upload": "^12.0.0"
},
"devDependencies": {
"nodemon": "^2.0.12"
},
但我也試過這個
"resolutions": {
"**/**/fs-capacitor": "^6.2.0",
"**/graphql-upload": "^11.0.0"
}
節點版本:14.16.1 和 14.17.3
謝謝
scalar Upload
Upload: GraphQLUpload
GraphQLUpload 從 'graphql-upload' import { GraphQLUpload } from "graphql-upload";
: import { GraphQLUpload } from "graphql-upload";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.