标签: nestjs

如何使用nestjs记录服务

我试图使用Loggernestjs 的内部(在https://docs.nestjs.com/techniques/logger - >上描述,但没有描述如何使用它)

但我有问题(试图注射LoggerService等)

任何人都可以解释如何做到这一点?

TIA

javascript logging node.js typescript nestjs

21
推荐指数
4
解决办法
1万
查看次数

如何在 Nestjs 中刷新令牌

import { ExtractJwt, Strategy } from 'passport-jwt';
import { AuthService } from './auth.service';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { JwtPayload } from './model/jwt-payload.model';

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

  async validate(payload: JwtPayload) {
    const user = await this.authService.validateUser(payload);
    if (!user) {
      throw new UnauthorizedException();
    }
    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

令牌是从请求中提取的PassportStrategy。我不知道如何在令牌过期或无效时捕获错误。我的目的是如果因为令牌过期而出现错误,我需要刷新令牌。否则做别的事情。

javascript node.js typescript passport.js nestjs

21
推荐指数
2
解决办法
2万
查看次数

nestjs vs普通表达

我刚刚在一个简单的nest控制器上测试了性能,它在get请求(没有数据库)上返回文本.与快递相同的简单GET控制器(中间件).

我使用WRK工具来测试性能.

因此,plain express比nestjs快2倍.为什么nestjs会产生如此多的开销?

nestjs

20
推荐指数
1
解决办法
1万
查看次数

从另一个模块注入nestjs服务

我有一个PlayersModule和一个ItemsModule.

我想用ItemsServicePlayersService.

当我通过注射添加它时:

import { Injectable } from '@nestjs/common';
import { InjectModel } from 'nestjs-typegoose';
import { ModelType, Ref } from 'typegoose';
import { Player } from './player.model';
import { Item } from '../items/item.model';
import { ItemsService } from '../items/items.service';

@Injectable()
export class PlayersService {
    constructor(
        @InjectModel(Player) private readonly playerModel: ModelType<Player>,
        private readonly itemsService: ItemsService){}
Run Code Online (Sandbox Code Playgroud)

我得到这个嵌套错误:

[Nest] 11592 - 2018-8-13 11:42:17 [ExceptionHandler] Nest无法解析PlayersService(+ ,?)的依赖关系.请确保索引[1]的参数在当前上下文中可用.

两个模块都导入了app.module.ts.这两项服务都在他们的模块中单独工作.

javascript node.js nestjs

20
推荐指数
4
解决办法
8423
查看次数

nestjs应用程序生产部署的正确方法是什么

我开发了简单的 nestjs 休息服务。现在我计划部署我的应用程序。请帮助我以高效的方式部署 nestjs 应用程序。

javascript deployment node.js typescript nestjs

20
推荐指数
1
解决办法
2万
查看次数

构建打字稿时如何将非ts文件复制到dist?

我在具有以下结构的文件夹中有邮件模块:

- Mail
  - templates
      - <Handlebars files>
  - mail.module.ts
Run Code Online (Sandbox Code Playgroud)

当我构建(编译)TypeScript 项目时,我的template文件夹不包含在build文件夹中。dist构建时如何将这些文件移入?

开发和生产构建有什么不同吗?

build typescript nestjs

20
推荐指数
4
解决办法
2万
查看次数

如何在 NestJS 中获取依赖树/图?

Nestjs 非常方便地提供了开箱即用的 DI 容器,但随着项目变得越来越复杂,很容易丢失所有依赖项及其顺序的全貌。

问题:有没有办法以可以放入树/图中的方式获取所有依赖项(模块、提供程序、控制器...)的列表?我确信 Nestjs 在内部跟踪这些信息,我想知道访问它的最佳方式是什么。

(我找到了[ nestjs-dependency-graph],但它手动扫描模块以获取元数据,没有找到所有依赖项,并且往往会进入无限循环)

dependency-injection nestjs

20
推荐指数
2
解决办法
9046
查看次数

请确保索引 [0] 处的参数 ContactRepository 在 RootTestModule 上下文中可用

我正在尝试通过 Nest 测试一个课程。在这个类中(参见下图),对该类进行编码的人通过 typeorm 创建一个存储库。

在此输入图像描述

当我尝试测试“createContact”函数时,出现以下错误:“Nest 无法解析 ContactService 的依赖项(?)。请确保索引 [0] 处的参数 ContactRepository 在 AuthModule 上下文中可用”。

这是我的测试课:

在此输入图像描述

您知道如何使测试考虑到这一点,从而不再出现错误吗?

typescript jestjs nestjs

20
推荐指数
1
解决办法
2万
查看次数

找不到模块“@nestjs/core”或其相应的类型声明

几周前,我在我的计算机上全局安装了 NestJS。现在我回到这个话题,开始学习。

所以我用命令创建了新项目:

nest new ./
Run Code Online (Sandbox Code Playgroud)

它生成了所有文件,但是当我尝试使用命令运行该应用程序时:

nest start
Run Code Online (Sandbox Code Playgroud)

我预计该模板项目会启动,但导入路径有错误?这是由于我安装的 Nest 版本还是其他原因造成的?

屏幕上的错误: 在此输入图像描述

我的巢版本: 7.5.6

包.json:

  "dependencies": {
    "@nestjs/common": "^7.6.13",
    "@nestjs/core": "^7.6.13",
    "@nestjs/platform-express": "^7.6.13",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.5.6",
    "@nestjs/schematics": "^7.2.7",
    "@nestjs/testing": "^7.6.13",
    "@types/express": "^4.17.11",
    "@types/jest": "^26.0.20",
    "@types/node": "^14.14.31",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.15.2",
    "@typescript-eslint/parser": "^4.15.2",
    "eslint": "^7.20.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-prettier": "^3.3.1",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.1.3",
    "ts-jest": "^26.5.2",
    "ts-loader": "^8.0.17",
    "ts-node": "^9.1.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.1.5"
  },
Run Code Online (Sandbox Code Playgroud)

nestjs

20
推荐指数
1
解决办法
6万
查看次数

如何验证nestjs中的查询参数

哟,我有 Nestjs 的商店应用程序,我需要验证 mongo id,这是通过查询传递的,问题是我也传递和搜索查询。我编写了验证所有值的管道,并排除了此搜索查询

\n
@Injectable()\nexport class ValidationObjectId implements PipeTransform {\n    transform(value: UniqueId, metadata: ArgumentMetadata) {\n        if (\n            !Types.ObjectId.isValid(value) &&\n            metadata.data !== "searchString"\n        ) {\n            throw new BadRequestException("\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80 \xd0\xb7\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd0\xb0");\n        }\n\n        return value;\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但此代码不可重用于其他情况。我想要一些例子,我该怎么做

\n

javascript design-patterns node.js nestjs

20
推荐指数
1
解决办法
5万
查看次数