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.77k stars 2.03k forks source link

express v5 #7928

Open joergbaier opened 1 month ago

joergbaier commented 1 month ago

@apollo/server has express v4 as a dependency. After several years, express is moving forward with releasing v5 (currently published as next tag). Having support for v5 here would unblock and encourage people to upgrade.

https://www.npmjs.com/package/express?activeTab=versions https://github.com/expressjs/express/releases/tag/v5.0.0

At this time, I have not checked for breaking changes in this repo, but wanted to open this issue to get things rolling. Any changes could be published under the next tag as well.

joergbaier commented 1 month ago

Typing updates for @types/express & @types/express-serve-static-core https://github.com/DefinitelyTyped/DefinitelyTyped/pull/70563

RobinTail commented 1 month ago

Breaking changes are listed in the migration guide, which is not yet up to date. Besides the listed changes there is also Node.js min supported version: 18. The primary feature is proper handling of asynchronous handlers.

glasser commented 1 month ago

I think it would be a good start if community members wanted to publish Express 5 integrations separately (perhaps under the @as-integrations npm org / apollo-server-integrations GitHub org)! While we could add a @apollo/server/express5 directory directly to Apollo Server, it might be challenging to do so in a way that uses different dependencies for two different parts of the same npm module, so getting this in core might be more likely a thing for the next major version of AS, which is not currently scheduled.

RobinTail commented 3 weeks ago

I made types. Enjoy :)

image

P4sca1 commented 2 weeks ago

I am using express5 beta with apollo server 4 for the past year without any problems. After upgrading @types/express and @types/express-serve-static-core to v5, I needed to override the version in apollo server to avoid type mismatches. e.g. for pnpm:

{
        "pnpm": {
                "overrides": {
                        "@types/express": "5.0.0",
                        "@types/express-serve-static-core": "5.0.0"
                }
        }
}