在Apollo Server Express with graphql-upload Node 14中,启用文件上传需要使用apollo-upload-server包。但是,在某些情况下,可能会发生'未知类型Upload”的错误。这通常是由于将graphql-upload软件包升级到最新版本(version 11.0.0或更高版本)而引起的。
要解决此错误,需要将graphql-upload软件包降级到version 10.0.0。以下是解决方法的代码示例:
1.使用npm安装apollo-upload-server版本'1.1.0”:
npm install apollo-upload-server@1.1.0
2.然后在服务器文件中,使用以下代码片段引入apollo-upload-server和graphql-upload:
const express = require('express'); const { ApolloServer } = require('apollo-server-express'); const { graphqlUploadExpress } = require('graphql-upload'); const typeDefs = require('./schema'); const resolvers = require('./resolvers');
const app = express();
const server = new ApolloServer({ typeDefs, resolvers, uploads: false });
app.use(graphqlUploadExpress()); server.applyMiddleware({ app });
app.listen({ port: 4000 }, () =>
console.log( Server ready at http://localhost:4000${server.graphqlPath}
)
);
在这个例子中,注意'uploads: false”。如果不关闭上传,则错误信息将继续出现。
3.运行服务器,并确保在graphql查询中输入变量名称时使用'Upload!”。例如:
mutation($file: Upload!) { singleUpload(file: $file) { filename } }
这个修改应该会解决'未知类型Upload”的错误,并让您顺利地进行文件上传。