Как воспроизвести:
server.js
const { ApolloServer, makeExecutableSchema, gql } = require('apollo-server');
const typeDefs = gql`
type Mutation {
uploadAvatar(upload: Upload!): String!
}
`;
const resolvers = {
Mutation: {
uploadAvatar(root, args, context, info) {
return 'test';
}
}
};
const schema = makeExecutableSchema({ typeDefs, resolvers });
const server = new ApolloServer({
schema,
});
server.listen().then(({ url }) => {
console.info(`? Server ready at ${url}`);
});
package.json
"dependencies": {
"apollo-server": "^2.0.0-rc.6",
"graphql": "^0.13.2"
}
На узле server.js мы получаем следующую ошибку:
Type "Upload" not found in document.
Учитывая последнюю версию сервера apollo, могу ли я добавить что-нибудь еще в запрос? Согласно руководству по это и нескольким другим источникам, которые я в настоящее время не могу вспомнить, не нужно делать ничего, кроме записи «Загрузить», и все должно работать нормально. Я что-нибудь упускаю?


Я исправил это двумя способами, в примере с документами apollo:
вы можете видеть, что он не использует makeExecutableSchema, но передал резолверы и схему серверу apollo, это остановило ошибку:
Type "Upload" not found in document.
Если вы хотите использовать makeExecutableSchema, импортируйте скаляр
const typeDefs = gql`
scalar Upload
type Mutation {
uploadAvatar(upload: Upload!): String!
}
type Query {
ping: String
}
`;
https://github.com/jaydenseric/apollo-upload-examples/blob/master/api/schema.mjs
если вы посмотрите на некоторые из примеров исходного кода для сообщения в блоге, вы увидите, что он использует скаляр
Причина, по которой он не добавлялся автоматически:
Scalar Upload The Upload type automatically added to the schema by Apollo Server resolves an object containing the following:
Обновлено: Apollo прояснил, что при использовании makeExecutableSchema вам необходимо определить скаляр, чтобы он работал
In a situation where a schema is set manually using makeExecutableSchema and passed to the ApolloServer constructor using the schema params, add the Upload scalar to the type definitions and Upload to the resolver
https://www.apollographql.com/docs/guides/file-uploads.html#File-upload-with-schema-param
Кажется, это должно работать правильно: `` Apollo Server 2.0 автоматически добавляет скаляр выгрузки в схему, поэтому любое существующее объявление скаляра выгрузки в схеме должно быть удалено. `` ''