【问题标题】:exporting nest js middleware to another project将嵌套 js 中间件导出到另一个项目
【发布时间】:2020-10-14 02:04:35
【问题描述】:

我正在尝试将 NestJS 中的自定义中间件项目导出到我的所有其他项目(并将其导入所有项目)。我的实际课程是 acl-jwt.middleware.ts 在其引导程序 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';

我不是在导出什么东西吗?还是我没有正确导入?

我一直在互联网上搜索,但找不到与我的用例有关的东西。任何帮助都会非常好。谢谢你们! :)

【问题讨论】:

    标签: node.js nestjs middleware


    【解决方案1】:

    您需要确保在您的mi 包的package.json 中,您有指向正确导出的文件/目录的mainfiles。如果是桶文件,比如index.js,那么你需要确保它正确导出中间件。

    【讨论】:

    • 非常感谢。这为我节省了很多时间。我只需要以正确的方式导出它!
    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 2017-04-27
    • 1970-01-01
    • 2016-01-24
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    相关资源
    最近更新 更多