跳转到内容

在nest中使用Imagekit.io

发布于:

nest中构建imagekit.io服务

npm install imagekit-nestjs
npm install @nestjs/config

创建configs/imagekit.config.ts

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文件

IMAGEKIT_PUBLIC_KEY = "";
IMAGEKIT_PRIVATE_KEY = "";
IMAGEKIT_URL_ENDPOINT = "";

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

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设置变量,而且没有把他变成全局可用导致的