NexusJS 错误:TypeError:类构造函数 GraphQLNonNull 不能在没有“新”的情况下调用
Posted
技术标签:
【中文标题】NexusJS 错误:TypeError:类构造函数 GraphQLNonNull 不能在没有“新”的情况下调用【英文标题】:NexusJS Error: TypeError: Class constructor GraphQLNonNull cannot be invoked without 'new' 【发布时间】:2022-01-15 02:46:53 【问题描述】:我正在尝试学习 nexus,但遇到了问题。
我用这段代码创建了 index.ts 文件:
const User = objectType(
name: 'User',
definition(t)
t.id('id')
t.string('name')
)
export const schema = makeSchema(
types: [User],
outputs:
typegen: __dirname + '/generated/nexus.generated.ts',
schema: __dirname + 'schema.graphql'
)
然后我尝试运行脚本:
ts-node-dev --transpily-only --no-notify index.ts
然后在控制台报错:
TypeError: Class constructor GraphQLNonNull cannot be invoked without 'new'
at SchemaBuilder.missingType (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:1099:19)
at SchemaBuilder.getOrBuildType (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:1448:17)
at /home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:794:37
at Array.forEach (<anonymous>)
at SchemaBuilder.buildNexusTypes (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:782:38)
at SchemaBuilder.getFinalTypeMap (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:835:10)
at Object.makeSchemaInternal (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/builder.ts:1684:92)
at makeSchema (/home/zelleaz/Projects/mui/server/node_modules/nexus/src/makeSchema.ts:14:49)
at Object.<anonymous> (/home/zelleaz/Projects/mui/server/index.ts:11:33)
at Module._compile (internal/modules/cjs/loader.js:1201:30)
我尝试重新安装nexus,但它不起作用
项目文件和目录:
/node_modules
index.ts
package.json:
dependencies: apollo-server, graphql, nexus
dev-dep: ts-node-dev typescript
package-lock.js
【问题讨论】:
由于某种原因,它不适用于 graphql 包版本 16+ 我使用了 graphql v 14.5.8,它解决了这个问题。 nexus 版本是 1.1.0 nexus 不适用于 graphql 16+ Github pull-request 修复或其他东西:github.com/graphql-nexus/nexus/pull/977 【参考方案1】:NexusJS 目前不适用于 graphql 16+ 所以你必须使用旧版本。 就我而言,14.5.8(来自 GitHub nexus 示例)工作正常 有针对 graphql 16+ 版本的修复请求: https://github.com/graphql-nexus/nexus/pull/977
【讨论】:
【参考方案2】:降级到 graphql@^15.8.0 为我解决了这个问题
【讨论】:
【参考方案3】:他们现在还没有发布稳定版本,但版本 nexus@1.2.0-next.17 似乎对我来说工作正常 atm ref https://github.com/graphql-nexus/nexus/pull/1017 它尚未得到官方支持,因此您现在必须输入 .env 或 env.local "PEER_DEPENDENCY_CHECK='false'" 才能禁用此对等依赖性检查。 那么你就可以拥有最新的graphql 16+
这绝对让我不必使用 prisma migrate dev 和 prisma db push 来删除类型错误。
希望他们能在 2022 年第一季度/第二季度之前获得稳定的 1.2.0 版本
【讨论】:
以上是关于NexusJS 错误:TypeError:类构造函数 GraphQLNonNull 不能在没有“新”的情况下调用的主要内容,如果未能解决你的问题,请参考以下文章
挂载钩子中的错误:“TypeError:没有'new'就不能调用类构造函数节点”
TypeError:没有'new'就不能调用类构造函数MixinStrategy