apollo-server/docs/_config.yml
Jesse Rosenberger 9c563fae50
Throw error at startup when file uploads are enabled on Node.js < 8.5.0.
Due to changes in the third-party `graphql-upload` package which Apollo
Server utilizes to implement out-of-the-box file upload functionality, we
must drop support for file uploads in versions of the Node.js engine prior
to v8.5.0.  Since file uploads are supported by default in Apollo Server 2.x,
and there is an explicit dependency on `graphql-upload`, we must
prevent users who are affected by this mid-major-release deprecation by
being surprised by the sudden lack of upload support.

By `throw`-ing an error at server startup for affected users, we certainly
are breaking a semantic versioning agreement for these users, however with a
relatively simple ergonomic (setting `uploads: false`) we allow those users
who are NOT utilizing file uploads (as we believe is the case with a
majority) to continue using their version of Node.js until it reaches the
end of its supported lifetime (as dictated by its Long Term Support
agreement with the Node.js Foundation).  If we did not `throw` the error at
server start-up, those affected may not notice since they may update and start
their updated server without noticing the impending chance of failure when
someone tries updating!

Apollo Server 2.x has attempted to maintain full compatibility with versions
of Node.js which are still under Long Term Support agreements with the
Node.js Foundation.  While this continues to mostly be true, file uploads
are an exception which we've now had to make.

Third-party open-source projects must absolutely do what's best for their
project.  From an architecture standpoint, I suspect that we (the designers
behind Apollo Server) are mostly to blame for this.  Namely, it's unfortunate
that we had made such an incredibly coupled integration with a third-party
package that we restricted our users from incrementally adopting the
changes (and new/improved functionality) of, in this particular case,
the `graphql-upload` package.  I hope we can take better care with decisions
like this in the future!

Lastly, this commit also adds documentation to help those affected.
2018-11-30 15:59:57 +02:00

61 lines
1.4 KiB
YAML

title: Apollo Server
propertytitle: Using Apollo Server
subtitle: Apollo Server
description: A guide to using Apollo Server.
versions:
- '2'
- '1'
sidebar_categories:
null:
- index
- getting-started
- whats-new
Essentials:
- essentials/schema
- essentials/server
- essentials/data
Features:
- features/mocking
- features/errors
- features/data-sources
- features/subscriptions
- features/metrics
- features/graphql-playground
- features/scalars-enums
- features/unions-interfaces
- features/directives
- features/creating-directives
- features/authentication
- features/testing
# Schema stitching:
# - features/schema-stitching
# - features/remote-schemas
# - features/schema-delegation
# - features/schema-transforms
Deployment:
# - deployment/index
- deployment/heroku
- deployment/lambda
- deployment/now
API Reference:
- api/apollo-server
- api/graphql-tools
Migration:
- migration-two-dot
- migration-engine
- migration-file-uploads
github_repo: apollographql/apollo-server
content_root: docs/source
typescript_api_box:
data_file: docs.json
url: https://www.apollographql.com/docs/apollo-server/
root: /docs/apollo-server/
public_dir: public/docs/apollo-server
versioned-netlify-redirects:
netlify_site_id: apollo-server-docs