在nest中使用Imagekit.io

nest中构建imagekit.io服务

1
npm install imagekit-nestjs
1
npm install @nestjs/config

创建configs/imagekit.config.ts

1
2
3
4
5
6
7
8
9
10
import { ConfigService } from "@nestjs/config";
import { ImageKitModuleOptions } from "imagekit-nestjs";

export const ImageKitConfig = (
configService: ConfigService
): ImageKitModuleOptions => ({
privateKey: configService.get("IMAGEKIT_PRIVATE_KEY"),
publicKey: configService.get("IMAGEKIT_PUBLIC_KEY"),
urlEndpoint: configService.get("IMAGEKIT_URL_ENDPOINT"),
});

根目录下创建.env文件

1
2
3
IMAGEKIT_PUBLIC_KEY=''
IMAGEKIT_PRIVATE_KEY=''
IMAGEKIT_URL_ENDPOINT=''

在AppModule中注入,允许环境变量全局可用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ImageKitModule } from 'imagekit-nestjs';
import { ImageKitConfig } from './configs/imagekit.config';

@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
ImageKitModule.forRootAsync({
useFactory: ImageKitConfig,
inject: [ConfigService],
imports: [ConfigModule],
isGlobal: true, // is optional
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

完成

一些错误

报错

Error: Missing publicKey during ImageKit initialization

控制台打印后发现publickey和private都是undefined

这里是因为没有创建.env设置变量,而且没有把他变成全局可用导致的