如何使用Apollo修复代码生成时的“主要GraphQL源”错误?

时间:2019-05-12 18:39:45

标签: android graphql apollo

我正在尝试使用Apollo代码生成将Android应用程序与GraphQL连接。我遇到这种错误:

ERROR: Value 'main GraphQL source' specified for property '$1' cannot be converted to a file.

我在中等水平上做了很多教程,使用了github指令,但是没有一个对我有帮助。为了生成schema.json,我使用了apollo,同时也弃用了apollo-codegen。

项目级gradle依赖项:

 dependencies {
     classpath 'com.android.tools.build:gradle:3.4.0'
     classpath 'com.apollographql.apollo:gradle-plugin:0.4.1'
 } 

在应用程序等级上,我添加了一行:

apply plugin: 'com.apollographql.android'

我还在主文件夹中创建了一个文件夹'graphql',然后将getPosts.graphql文件放入其中:

query allPostsQuery{
    findAllUsers{
        username
        email
        }
    }

然后我使用(查询的一部分)生成schema.json:

    {
      "kind": "OBJECT",
      "name": "Query",
      "description": "",
      "fields": [
        {
          "name": "findAllUsers",
          "description": "",
          "args": [],
          "type": {
            "kind": "NON_NULL",
            "name": null,
            "ofType": {
              "kind": "LIST",
              "name": null,
              "ofType": {
                "kind": "OBJECT",
                "name": "User",
                "ofType": null
              }
            }
          },
          "isDeprecated": false,
          "deprecationReason": null
        },
        {
          "name": "findUser",
          "description": "",
          "args": [
            {
              "name": "username",
              "description": "",
              "type": {
                "kind": "NON_NULL",
                "name": null,
                "ofType": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
                }
              },
              "defaultValue": null
            }
          ],
          "type": {
            "kind": "NON_NULL",
            "name": null,
            "ofType": {
              "kind": "OBJECT",
              "name": "User",
              "ofType": null
            }
          },
          "isDeprecated": false,
          "deprecationReason": null
        }
      ],
      "inputFields": null,
      "interfaces": [],
      "enumValues": null,
      "possibleTypes": null
    },

模式生成:

 apollo-codegen introspect-schema http://localhost:1100/graphql --output schema.json

2 个答案:

答案 0 :(得分:0)

在项目结构(文件->项目结构->项目)中,将Gradle插件版本更改为3.3.2,将Gradle版本更改为4.10.1。

如果仍然无法正常运行,请将Gradle版本更改为旧版本。

希望它会起作用。对我来说也一样。

答案 1 :(得分:0)

我尝试了Sneha的建议,对我来说很好。

如果您不想降级Android Gradle pluginGradle版本,可以更改

classpath 'com.apollographql.apollo:gradle-plugin:0.4.1'

classpath 'com.apollographql.apollo:apollo-gradle-plugin:1.0.0'

在项目级别build.gradle文件中。

还请在您的应用模块的apollo-runtime文件中将apollo android support librarybuild.gradle更新为最新版本。

implementation 'com.apollographql.apollo:apollo-runtime:1.0.0'
implementation "com.apollographql.apollo:apollo-android-support:1.0.0"

希望这能解决您的问题,如果您还有其他问题,请告诉我。