apollographql / apollo-server

🌍  Spec-compliant and production ready JavaScript GraphQL server that lets you develop in a schema-first way. Built for Express, Connect, Hapi, Koa, and more.
https://www.apollographql.com/docs/apollo-server/
MIT License
13.79k stars 2.03k forks source link

[apollo-server-fastify] playground not working #4463

Closed marcopeg closed 3 years ago

marcopeg commented 4 years ago

I followed the instructions at https://www.npmjs.com/package/apollo-server-fastify and the /graphql endpoint works but it doesn't run the playground even with playground: true, introspection: true in the settings.

Versions

"dependencies": {
  "fastify": "3.2.0",
  "apollo-server-fastify": "2.16.1"
},

Expected behavior:

Going to /graphql with a browser should run the playground

Actual behavior:

It shows: GET query missing.

How to reproduce it:

You can run the example in a CodeSandbox:
https://codesandbox.io/s/wispy-dream-66j5g?file=/package.json:197-281

ghost commented 4 years ago

Same here, when using it with nestJs. Got the same result of GET query missing.

  ... 
  "@nestjs/platform-fastify": "^7.4.2",
  "apollo-server-fastify": "^2.16.1",
  ...
 export const graphQLConfig: GqlModuleOptions = {
    typePaths: ['./**/*.graphql'],
    // playground: environment.isDevelopment,
    playground: true,
    ...
}
a7ul commented 4 years ago

Faced the same issue. Seems like its because this package doesnt support fastify v3. Downgrading to fastify 2 makes it work.

I guess we can either wait for https://github.com/apollographql/apollo-server/pull/4356 to land or downgrade to fastify v2 for the time being.

ghost commented 4 years ago

Faced the same issue. Seems like its because this package doesnt support fastify v3. Downgrading to fastify 2 makes it work.

I guess we can either wait for #4356 to land or downgrade to fastify v2 for the time being.

Exactly... In my case I will wait and use GraphiQL for now. Will keep an eye on #4356

mpeirone commented 4 years ago

I have the same issue, do you know any workaround?

Duduzera1997 commented 4 years ago

+1

NickMandylas commented 4 years ago

Would love an update for Fastify v3!

phattranky commented 4 years ago

To fix this issue, I simply upgrade the apollo-server-fastify to "apollo-server-fastify": "^3.0.0-alpha.3" .

The alpha version seems not safe, But I didn't see any errors so far

Duduzera1997 commented 4 years ago

To fix this issue, I simply upgrade the apollo-server-fastify to "apollo-server-fastify": "^3.0.0-alpha.3" .

The alpha version seems not safe, But I didn't see any errors so far

@phattranky This works for me, for now my application does not need something 100% safe, thanks!

inakineitor commented 4 years ago

@phattranky @Duduzera1997 I upgraded to the alpha version but get this error. What version of the graphql and @nestjs/graphql packages are you using?

(node:1501) UnhandledPromiseRejectionWarning: TypeError: this.apolloServer.installSubscriptionHandlers is not a function
    at GraphQLModule.<anonymous> (/Users/inakineitor/Documents/Couponara/couponara-backend/node_modules/@nestjs/graphql/dist/graphql.module.js:97:35)
    at Generator.next (<anonymous>)
    at fulfilled (/Users/inakineitor/Documents/Couponara/couponara-backend/node_modules/tslib/tslib.js:111:62)
(node:1501) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:1501) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Duduzera1997 commented 4 years ago

@phattranky @Duduzera1997 I upgraded to the alpha version but get this error. What version of the graphql and @nestjs/graphql packages are you using?

(node:1501) UnhandledPromiseRejectionWarning: TypeError: this.apolloServer.installSubscriptionHandlers is not a function
    at GraphQLModule.<anonymous> (/Users/inakineitor/Documents/Couponara/couponara-backend/node_modules/@nestjs/graphql/dist/graphql.module.js:97:35)
    at Generator.next (<anonymous>)
    at fulfilled (/Users/inakineitor/Documents/Couponara/couponara-backend/node_modules/tslib/tslib.js:111:62)
(node:1501) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:1501) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

"@nestjs/common": "^7.0.0", "@nestjs/core": "^7.0.0", "@nestjs/graphql": "^7.7.0", "@nestjs/platform-fastify": "^7.4.4", "apollo-server-fastify": "^3.0.0-alpha.3",", "graphql": "^15.3.0", "graphql-tools": "^6.2.4"

inakineitor commented 4 years ago

Weird. I have the same versions for everything but graphql-tools, for which I have ^6.2.5. I decided to change back to express for now until apollo-server-fastify 3 leaves alpha. Thanks @Duduzera1997!

abernix commented 4 years ago

For those attempting to use Apollo Server 3.x for its newer Fastify version, please see https://github.com/apollographql/apollo-server/pull/4356#issuecomment-677515901, which is a comment I wrote for a similar audience on another PR which introduced the functionality. In particular, pay attention to my suggestion in that comment about reading the v3 CHANGELOG.md for details on how installSubscriptionsHandlers is affected (Subscriptions has been de-coupled from the core of the project, but is still installable separately).

simoami commented 4 years ago

Thanks @abernix for the update. We are working with a client to deploy a graphql gateway/orchestrator solution. We have an sla for high throughput, which is why I'm recommending Fastify as the underlying web framework. Apollo server needs to side with performance because it often ends up in the forefront ingesting all traffic in transitional architectures, and therefore Fastify (the performance web framework) is equally important to prioritize. I am excited to get graphql and Apollo into production in the near future and thanks for the great work.

tonimedina-pri commented 3 years ago

+1

glasser commented 3 years ago

This is fixed on the release-3.0 branch, which supports Fastify v3 (only). Apollo Server 3.0 is now under active development; I hope to get some alphas out within a week.

genu commented 3 years ago

Although this issue may be fixed, I'm unable to test it with 3.0.0-alpha.4 due to startup error:

TypeError: this.ensureStarting is not a function at ApolloServer.createHandler (/node_modules/apollo-server-fastify/dist/ApolloServer.js:22:14)

glasser commented 3 years ago

@genu What version of apollo-server-core is installed? There might be an issue there.

That said I'll have another alpha out pretty soon hopefully; there's been a lot of improvements since the last one.

marcopeg commented 3 years ago

@genu I finally got it working by also installing apollo-server-core@3.0.0-alpha.4 (same version as apollo-server-fastify). Here is my working package.json: https://github.com/forrestjs/forrestjs/blob/master/packages/service-fastify-gql/package.json

@glasser Somehow, I and some others didn't figure this out by reading the docs. Your last comment pointed me in the right direction.

Do you think it might be useful to make it more explicit in the docs?

genu commented 3 years ago

I'll test that configuration on my end and report back.

Thx

tkow commented 3 years ago

I found current preview version has possibility affects your yarn.lock or package.lock version polluted. If you use yarn, it can fix resolutions until next release.

See the detail: https://github.com/apollographql/apollo-server/issues/5278

glasser commented 3 years ago

@marcopeg Yes, planning to get peer deps right as part of AS3 release. #5210.