有或没有 tsconfig 目标 es5 的 NestJS 和 TypeORM 问题

Posted

技术标签:

【中文标题】有或没有 tsconfig 目标 es5 的 NestJS 和 TypeORM 问题【英文标题】:NestJS and TypeORM issue with or without tsconfig target es5 【发布时间】:2019-09-21 00:53:12 【问题描述】:

根据 NestJS 身份验证教程,我复制粘贴了 JwtStrategy 类,但该类在构建时抛出错误

类代码是

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) 
  constructor(private readonly userRepo: UserRepository) 
    super(
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: 'secretKey'
    );
  

在 tsconfig.json 文件中使用 target=es5 我得到的错误

现在,如果我将目标更改为 es6,错误就会消失,但是 typeorm 多对多关系开始抛出错误

TypeORM 类用户得到了令牌,令牌类得到了用户,它会抛出下面的错误

我已创建存储库以重现 this 链接处的错误

运行以下命令查看错误

ng s --project=api

【问题讨论】:

你能和我们分享你的模型吗?从错误中我会说你的模型中有循环依赖。 是的,这是循环依赖错误,但这就是 typeorm 中实体的设计方式。如果我使用 es5 目标,我不会收到该错误,但如果我使用 es6 目标,那么我会开始收到它。 我的问题中有 repo 链接,可以轻松下载和执行。它也有你正在寻找的课程 【参考方案1】:

您正在混合使用nest v5 和nest v6,但不保证不同的主要版本可以正常互操作,例如:

"@nestjs/core": "5.5.0",
"@nestjs/jwt": "^6.0.0",

请将您的@nestjs 依赖项全部更新到migration guide 之后的版本6。

【讨论】:

不工作,我使用 nrwl 创建了新项目,然后替换了我的旧包 json,但它没有工作

以上是关于有或没有 tsconfig 目标 es5 的 NestJS 和 TypeORM 问题的主要内容,如果未能解决你的问题,请参考以下文章

tsconfig.json

澄清 Typescript 的目标和库设置的功能

tsconfig.json 的目的是啥?

tsconfig.json 中模块类型的区别

Typescript tsconfig 排除一些源文件

如何在 TypeScript 中定位 ES2018?