当我尝试通过apollo service:push --endpoint=http://localhost:4001
将我的apollo服务器应用程序推送到Apollo引擎时,出现错误消息:
Uploading service to Engine → Unknown directive "key".
我在做什么错了?
我目前正在建立一个带有一堆微服务的后端项目,我想使用Apollos新的托管联合功能,其中每个微服务的graphql模式都推送到Apollo图管理器,并由apollo网关服务器进行组合。
我的模式如下:
extend type Query {
me: User
}
type User @key(fields: "id") {
id: ID!
name: String
username: String
}
这些是我的解析器:
const resolvers = {
Query: {
me() {
return users[0];
}
},
User: {
__resolveReference(object) {
return users.find(user => user.id === object.id);
}
}
};
这是我的服务器设置:
const server = new ApolloServer({
schema: buildFederatedSchema([{ typeDefs, resolvers }])
});
server.listen({ port: 4001 }).then(({ url }) => {
console.log(`Server ready at ${url}`);
});
apollo.config.js
module.exports = {
service: {
localSchemaFile: "./src/graphql/schema.graphql"
}
};
这是完整的错误消息:
npx apollo service:push --endpoint=http://localhost:4001
√ Loading Apollo Project
× Uploading service to Engine
→ Unknown directive "key".
GraphQLSchemaValidationError: Unknown directive "key".
at Object.buildSchemaFromSDL (C:/Users/Juliu/AppData/Roaming/npm-cache/_npx/13168/node_modules/apollo/node_modules/apollo-graphql/lib/schema/buildSchemaFromSDL.js:38:15)
at FileSchemaProvider.resolveSchema (C:/Users/Juliu/AppData/Roaming/npm-cache/_npx/13168/node_modules/apollo/node_modules/apollo-language-server/lib/providers/schema/file.js:24:40)
at GraphQLServiceProject.resolveSchema (C:/Users/Juliu/AppData/Roaming/npm-cache/_npx/13168/node_modules/apollo/node_modules/apollo-language-server/lib/project/base.js:66:36)
at Task.task (C:/Users/Juliu/AppData/Roaming/npm-cache/_npx/13168/node_modules/apollo/lib/commands/service/push.js:70:50)
答案 0 :(得分:0)
如果您有多个架构文件,则希望使用逗号连接它们。
npx apollo service:push --localSchemaFile=$(find src/main/resources/graphql -name "*.graphqls" | tr "\n" "," | sed 's/.$//') --key=$APOLLO_KEY
其中src/main/resources/graphql
是架构目录的路径
答案 1 :(得分:-1)
运行时出现相同的错误:
npx apollo service:push \
--key=$APOLLO_KEY \
--graph=$GRAPH_NAME \
--variant=$GRAPH_VARIANT\
--serviceName=$SERVICE_NAME \
--serviceURL=$SERVICE_URL \
--localSchemaFile=./src/schema.graphql
由于阿波罗工具不知道阿波罗联合指令,所以出现错误。
使用以下命令安装联盟:
yarn global add @apollo/federation
重新运行第一个命令,它可以正常工作! (我从Apollo Studio支持人员那里得到了这个答案)