【发布时间】:2021-10-06 01:02:55
【问题描述】:
我几天来一直在努力更新我的 Meteor 应用程序以使用 Apollo 3。每次解析器访问 Mongo 时,我都会遇到一个非常令人沮丧的问题:
"stacktrace": [
"AssertionError [ERR_ASSERTION] [ERR_ASSERTION]: Cannot await without a Fiber",
" at awaitPromise (/Users/Tim/.meteor/packages/promise/.0.12.0.acrhc3.4u34++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/meteor-promise/promise_server.js:75:12)",
" at Promise.await (/Users/Tim/.meteor/packages/promise/.0.12.0.acrhc3.4u34++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/meteor-promise/promise_server.js:60:12)",
" at SynchronousCursor._nextObject (packages/mongo/mongo_driver.js:1118:38)",
" at SynchronousCursor.forEach (packages/mongo/mongo_driver.js:1132:22)",
" at SynchronousCursor.map (packages/mongo/mongo_driver.js:1142:10)",
" at SynchronousCursor.fetch (packages/mongo/mongo_driver.js:1166:17)",
" at Cursor.<computed> [as fetch] (packages/mongo/mongo_driver.js:920:44)",
" at MongoConnection.findOne (packages/mongo/mongo_driver.js:827:56)",
" at Collection.findOne (packages/mongo/collection.js:358:29)",
" at loginWithToken (app/api/auth/server/resolvers/mutation/login-with-token.ts:16:16)",
我已经尝试了所有我能想到的方法,包括:
将apollo-server-express middleware 包装在Meteor.bindEnvironment 中,然后将其附加到连接处理程序
在调用 makeExecutableSchema 之前将每个解析器函数包装在 Meteor.bindEnvironment 中。
我没有想法。如果我降级到 Apollo Server 2.25.2,它可以完美运行。这里还有其他人有这个问题吗?
【问题讨论】:
-
我还没有与 Apollo 合作过,但是 bindEnvironment 不会将东西包裹在纤维中。您可以尝试改用
Meteor.wrapAsync。 -
哦,有趣。另一个问题:您是在自己的代码中使用
await,还是在包本身中使用?
标签: meteor apollo-server