将 nest js 中间件导出到另一个项目
exporting nest js middleware to another project
我正在尝试将 NestJS 中的自定义中间件项目导出到我的所有其他项目(并将其导入所有项目)。我的实际 class 是 acl-jwt.middleware.ts
在其 bootstrap src
文件夹中。
在 acl-jwt.middleware.ts
我有:
import { Injectable, NestMiddleware, } from '@nestjs/common';
@Injectable()
export class AclJwtMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log("ACL JWT Middleware !!")
next();
}
}
我的 app.module.ts
有:
import { Module, NestModule, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AclJwtMiddleware } from './acl-jwt.middleware';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AclJwtMiddleware).forRoutes({ path: '*', method: RequestMethod.ALL });
}
}
并且在我的另一个项目 app.module.ts
中,我正在导入它,如下所示
import { AclJwtMiddleware } from 'mi';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AclJwtMiddleware).forRoutes({ path: '*', method: RequestMethod.ALL });
}
}
mi
是我的托管包。
然后当我 运行 我的第二个项目时,我得到以下错误:
src/app.module.ts:16:34 - error TS2307: Cannot find module 'mi' or its corresponding type declarations.
16 import { AclJwtMiddleware } from 'mi';
我不是在导出东西吗?还是我没有正确导入它?
我一直在 Internet 上搜索,但找不到与我的用例相关的内容。任何帮助都会非常好。谢谢你们! :)
您需要确保在 mi
包的 package.json
中,您有 main
或 files
指向正确导出的 file/directory。如果它是一个桶文件,比如 index.js
,那么你需要确保它正确导出中间件。
我正在尝试将 NestJS 中的自定义中间件项目导出到我的所有其他项目(并将其导入所有项目)。我的实际 class 是 acl-jwt.middleware.ts
在其 bootstrap src
文件夹中。
在 acl-jwt.middleware.ts
我有:
import { Injectable, NestMiddleware, } from '@nestjs/common';
@Injectable()
export class AclJwtMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log("ACL JWT Middleware !!")
next();
}
}
我的 app.module.ts
有:
import { Module, NestModule, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AclJwtMiddleware } from './acl-jwt.middleware';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AclJwtMiddleware).forRoutes({ path: '*', method: RequestMethod.ALL });
}
}
并且在我的另一个项目 app.module.ts
中,我正在导入它,如下所示
import { AclJwtMiddleware } from 'mi';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AclJwtMiddleware).forRoutes({ path: '*', method: RequestMethod.ALL });
}
}
mi
是我的托管包。
然后当我 运行 我的第二个项目时,我得到以下错误:
src/app.module.ts:16:34 - error TS2307: Cannot find module 'mi' or its corresponding type declarations.
16 import { AclJwtMiddleware } from 'mi';
我不是在导出东西吗?还是我没有正确导入它?
我一直在 Internet 上搜索,但找不到与我的用例相关的内容。任何帮助都会非常好。谢谢你们! :)
您需要确保在 mi
包的 package.json
中,您有 main
或 files
指向正确导出的 file/directory。如果它是一个桶文件,比如 index.js
,那么你需要确保它正确导出中间件。