尝试将服务推送到Apollo Engine时,如何解决“将服务上传到Engine→未知指令“键””错误?

当我尝试通过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)
ccpig520520 回答:尝试将服务推送到Apollo Engine时,如何解决“将服务上传到Engine→未知指令“键””错误?

如果您有多个架构文件,则希望使用逗号连接它们。

npx apollo service:push --localSchemaFile=$(find src/main/resources/graphql -name "*.graphqls" | tr "\n" "," | sed 's/.$//') --key=$APOLLO_KEY

其中src/main/resources/graphql是架构目录的路径

,

运行时出现相同的错误:

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支持人员那里得到了这个答案)

本文链接:https://www.f2er.com/3166527.html

大家都在问