问题 运行 apollo 服务器在 nodejs 升级后(使用 nestjs 和 fastify)
Problem running apollo server after nodejs upgrade (using nestjs and fastify)
我的 NestJs 应用程序出现问题。项目 运行 直到昨天才完美。
显然我的 node.js 从 14.16.1
升级到了 14.17.0
。所以我在我的 engines
对象中更改了这个版本号,在 package.json
中。我再次执行了 yarn install
,以确保一切都在那里,并尝试了 yarn start:dev
(转换为 nest start --watch
)。
但我的应用不是 运行 =(
看来我的 apollo-server-fastify 有问题:
UnhandledPromiseRejectionWarning: Error: You must `await server.start()` before calling `server.createHandler()`
at ApolloServer.assertStarted (/app/node_modules/apollo-server-fastify/node_modules/apollo-server-core/dist/ApolloServer.js:213:19)
at ApolloServer.createHandler (/app/node_modules/apollo-server-fastify/dist/ApolloServer.js:22:14)
at GraphQLModule.<anonymous> (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:150:45)
at Generator.next (<anonymous>)
at /app/node_modules/tslib/tslib.js:117:75
at new Promise (<anonymous>)
at Object.__awaiter (/app/node_modules/tslib/tslib.js:113:16)
at GraphQLModule.registerFastify (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:143:24)
at GraphQLModule.<anonymous> (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:118:28)
at Generator.next (<anonymous>)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:323734) 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: 2)
(node:323734) [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.
我知道 apollo 和 fastify 现在不是最好的朋友,我想我过去遇到过一个问题,我需要降级一些包。有谁知道如何 debug/fix 这个?我感到无能为力。
当前包版本:
"@nestjs/common": "^7.0.0",
"@nestjs/graphql": "^7.7.0",
"@nestjs/platform-fastify": "^7.6.4",
"apollo-server-fastify": "^3.0.0-alpha.3",
"graphql": "^15.5.0",
(我也试过将apollo-server-fastify升级到alpha 4,但是问题依旧)
TLDR
在维护者解决此问题之前,临时修复是将 this patch file 复制到您的存储库,然后修改您的 package.json 以使用以下内容:
"@nestjs/graphql": "patch:@nestjs/graphql@7.10.6#[YOUR/LOCAL/PATH]/graphql.patch"
背景
我 运行 在我的项目中遇到了同样的问题。我不确定来源,但我确实看到 apollo-server-fastify
大约在 5 天前更新为 3.0.0-lambda.0,几个小时前更新为 3.0.0-preview.0。
我追踪到 @nestjs/graphql
中的 registerFastify
方法的可能修复。我认为,解决方案是在调用 Apollo Server 的 createHandler()
方法之前,在 lib/graphql.module.ts
中的第 228 行调用 await apolloServer.start()
。我 opened an issue 在存储库上提供了更多详细信息,您可以在解决之前关注它。
我在使用 yarn patch @nestjs/graphql
处理的模板存储库中实施了修复。该存储库可在 dev-nx
b运行ch at troncali/nest-vue. The patch is located in ./.yarn/patches/@nestjs/graphql.patch
.
上找到
我的 NestJs 应用程序出现问题。项目 运行 直到昨天才完美。
显然我的 node.js 从 14.16.1
升级到了 14.17.0
。所以我在我的 engines
对象中更改了这个版本号,在 package.json
中。我再次执行了 yarn install
,以确保一切都在那里,并尝试了 yarn start:dev
(转换为 nest start --watch
)。
但我的应用不是 运行 =( 看来我的 apollo-server-fastify 有问题:
UnhandledPromiseRejectionWarning: Error: You must `await server.start()` before calling `server.createHandler()`
at ApolloServer.assertStarted (/app/node_modules/apollo-server-fastify/node_modules/apollo-server-core/dist/ApolloServer.js:213:19)
at ApolloServer.createHandler (/app/node_modules/apollo-server-fastify/dist/ApolloServer.js:22:14)
at GraphQLModule.<anonymous> (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:150:45)
at Generator.next (<anonymous>)
at /app/node_modules/tslib/tslib.js:117:75
at new Promise (<anonymous>)
at Object.__awaiter (/app/node_modules/tslib/tslib.js:113:16)
at GraphQLModule.registerFastify (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:143:24)
at GraphQLModule.<anonymous> (/app/node_modules/@nestjs/graphql/dist/graphql.module.js:118:28)
at Generator.next (<anonymous>)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:323734) 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: 2)
(node:323734) [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.
我知道 apollo 和 fastify 现在不是最好的朋友,我想我过去遇到过一个问题,我需要降级一些包。有谁知道如何 debug/fix 这个?我感到无能为力。 当前包版本:
"@nestjs/common": "^7.0.0",
"@nestjs/graphql": "^7.7.0",
"@nestjs/platform-fastify": "^7.6.4",
"apollo-server-fastify": "^3.0.0-alpha.3",
"graphql": "^15.5.0",
(我也试过将apollo-server-fastify升级到alpha 4,但是问题依旧)
TLDR
在维护者解决此问题之前,临时修复是将 this patch file 复制到您的存储库,然后修改您的 package.json 以使用以下内容:
"@nestjs/graphql": "patch:@nestjs/graphql@7.10.6#[YOUR/LOCAL/PATH]/graphql.patch"
背景
我 运行 在我的项目中遇到了同样的问题。我不确定来源,但我确实看到 apollo-server-fastify
大约在 5 天前更新为 3.0.0-lambda.0,几个小时前更新为 3.0.0-preview.0。
我追踪到 @nestjs/graphql
中的 registerFastify
方法的可能修复。我认为,解决方案是在调用 Apollo Server 的 createHandler()
方法之前,在 lib/graphql.module.ts
中的第 228 行调用 await apolloServer.start()
。我 opened an issue 在存储库上提供了更多详细信息,您可以在解决之前关注它。
我在使用 yarn patch @nestjs/graphql
处理的模板存储库中实施了修复。该存储库可在 dev-nx
b运行ch at troncali/nest-vue. The patch is located in ./.yarn/patches/@nestjs/graphql.patch
.