Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在nest.js中注入普通服务/提供者_Javascript_Typescript_Nestjs - Fatal编程技术网

Javascript 如何在nest.js中注入普通服务/提供者

Javascript 如何在nest.js中注入普通服务/提供者,javascript,typescript,nestjs,Javascript,Typescript,Nestjs,我在nest.js中创建了一个简单的typeScript类。 JwtTokenService.js // JwtTokenService.js import { Injectable, Optional } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import { JwtPayload } from '../modules/auth/interface/jwt-payload.interface'; @

我在nest.js中创建了一个简单的typeScript类。 JwtTokenService.js

// JwtTokenService.js

import { Injectable, Optional } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { JwtPayload } from '../modules/auth/interface/jwt-payload.interface';

@Injectable()
export class JwtTokenService {
  constructor(private readonly jwtService: JwtService) {}

  async generateJWT(payload: object): Promise<string> {
    payload['type'] = 'access_token';
    const token = this.jwtService.sign({ payload });
    return token;
  }
}
//JwtTokenService.js
从'@nestjs/common'导入{可注射,可选};
从'@nestjs/jwt'导入{JwtService};
从“../modules/auth/interface/jwt payload.interface”导入{JwtPayload};
@可注射()
导出类JwtTokenService{
构造函数(私有只读jwtService:jwtService){}
异步generateJWT(负载:对象):承诺{
有效负载['type']=“访问令牌”;
const token=this.jwtService.sign({payload});
返回令牌;
}
}

现在我如何在任何控制器中使用它。与user、auth和other类似。

在嵌套应用程序模块中注册服务:

从'@nestjs/common'导入{Module};
将{YourController}从“./path导入/your.controller”;
将{JwtTokenService}从“./path导入/JwtTokenService.service”;
@模块({
控制器:[您的控制器],
提供者:[JwtTokenService],
})
导出类应用程序模块{}
然后您可以在控制器中使用它:

从'@nestjs/common'导入{Controller,Get,Post,Body};
将{JwtTokenService}从“./path导入/JwtTokenService.service”;
@控制器(“您的”)
导出类控制器{
构造函数(私有只读jwtTokenService:jwtTokenService){}
@得到()
异步get(){
//使用`this.jwtTokenService`
...
}
}

Nest正在使用a向控制器提供服务,这就是为什么您需要在应用程序模块中声明服务是如何提供的。

非常感谢。我一直都做得很好。问题是另外一回事,我认为这与服务注入有关。顺便说一句,我们可以使用
JwtTokenService
,只需将它导入当前(您需要使用它的地方)
Module
文件,它就会工作。我们不需要将其导入到
ApplicationModule
是,但最终必须将其导入到ApplicationModule,例如,您的ApplicationModule将导入特定的模块。