目前,我正在学习 Nestjs,我发现 Nestjs 有自己的 npm 包列表,如 @nestjs/cqrs、@nestjs/jwt 等。所有包的完整列表是 https://www.npmjs.com/org/nestjs 。
现在我怀疑我们是否可以在任何 Node.js 应用程序(如 morgan、windston 等)中使用的 Nestjs 中使用所有 npm 包。
或者我们只能使用nestjs文档列表中提到的包。
最佳答案
首先,可以在 Nestjs 中使用 node.js 包及其 custom provider 。所以请参阅当前的文档。
其次,Nestjs 核心团队的 Brunner 在 Nestjs_framework Reddit 上帮助我解决了这个问题。他在 Github 上为我们做了一个很好的简短例子。我让他将名称从 reddit 更改为 node,以便断开此链接,但您可以在他的 Github 站点上找到它。他值得称赞。
我们不应该链接到 SO 上的解决方案。让我们开始吧。
Brunner 改变了我的架构,我喜欢他的方法。我想使用没有 Nestjs 模块的 Cloudinary Node SDK。这应该适用于导入任何 Node 包,至少这是我的理解。
注意:当您编写 this.cloudinary 时。您希望在 '.' 之后看到一个方法列表。 .你不会,所以只需使用 SDK 或包文档告诉你使用的任何代码。有点奇怪。
Cloudinary 组件位于我的 members 目录中的一个文件夹中,其中导入了一堆模块。
cloudinary.module.ts
import { Module } from '@nestjs/common';
import { cloudinaryProvider } from './cloudinary.provider';
import { CloudinaryService } from './cloudinary.service';
@Module({
providers: [cloudinaryProvider, CloudinaryService],
exports: [cloudinaryProvider],
})
export class CloudinaryModule {}
cloudinary.provider.ts
import { Provider } from '@nestjs/common';
import * as CloudinaryLib from 'cloudinary';
export const Cloudinary = 'lib:cloudinary';
export const cloudinaryProvider: Provider = {
provide: Cloudinary,
useValue: CloudinaryLib,
};
cloudinary.service.ts
import { Injectable, Inject } from '@nestjs/common';
import { Cloudinary } from './cloudinary.provider';
@Injectable()
export class CloudinaryService {
constructor(
@Inject(Cloudinary) private cloudinary
) {
// console.log('This is the cloudinary instance:');
// console.log(this.cloudinary);
}
}
最后是父模块:
members.module.ts
import { CloudinaryModule } from './cloudinary/cloudinary.module'
@Module({
imports: [
CloudinaryModule,
...
关于node.js - 我们可以在 Nestjs 中使用所有 Node npm 包吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57404341/