Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix 'main GraphQL source' error at code generation using Apollo?

I'm trying to connect Android app with GraphQL using Apollo code generation. I'm getting this type of error:

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

I made lot of tutorials on medium, used github instructions but none of them didn't help me. To generate schema.json I used apollo and also deprecated apollo-codegen.

Project-level gradle dependecies:

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

On app-gradle I added one line:

apply plugin: 'com.apollographql.android'

I also created a folder 'graphql' in my main folder, and I put getPosts.graphql file:

query allPostsQuery{
    findAllUsers{
        username
        email
        }
    }

Then I'm generated schema.json using (a part with my query):

    {
      "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
    },

Schema-generation:

 apollo-codegen introspect-schema http://localhost:1100/graphql --output schema.json
like image 301
yaw Avatar asked May 12 '19 18:05

yaw


People also ask

How does a GraphQL server deal with failures?

On GraphQL errorsThe onError link can retry a failed operation based on the type of GraphQL error that's returned. For example, when using token-based authentication, you might want to automatically handle re-authentication when the token expires.


1 Answers

I tried what Sneha suggested, that's working fine for me.

If you don't want to downgrade Android Gradle plugin and Gradle version you can change

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

to

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

in your project level build.gradle file.

Also please update apollo-runtime and apollo android support library to latest version in your build.gradle file of app module.

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

Hopefully this will resolve your issue, let me know if you've any issue further.

like image 66
Abhishek Aryan Avatar answered Sep 18 '22 19:09

Abhishek Aryan