NexusJS 错误:TypeError:类构造函数 GraphQLNonNull 不能在没有“新”的情况下调用

我试图学习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
stack overflow NexusJS Error: TypeError: Class constructor GraphQLNonNull cannot be invoked without 'new'
原文答案

答案:

作者头像

目前 NexusJS 不适用于 graphql 16+ 所以你必须使用旧版本。在我的情况下,14.5.8(来自 GitHub nexus 示例)工作正常有针对 graphql 16+ 版本的修复的拉取请求: https://github.com/graphql-nexus/nexus/pull/977

作者头像

降级到 graphql@^15.8.0 为我解决了这个问题

作者头像

他们现在还没有放置稳定的版本,但是版本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迁移的Dev和Prisma DB的推动,以删除类型错误。

希望他们能获得Q1/Q2 2022的稳定版本1.2.0