gpt4 book ai didi

serverless-framework - 使用 Serverless 和 AWS 不在 NestJS 上注入(inject)依赖项

转载 作者:行者123 更新时间:2023-12-04 17:36:46 27 4
gpt4 key购买 nike

各位

我正在尝试设置我的第一个 NestJS 应用程序。它由 AWS 上的无服务器提供支持。

我创建了一个简单的 Controller ,它有一个服务作为依赖项。当我使用 HTTP 客户端访问端点时,应该包含服务实例的对象是 undefined。我无法让它工作。你能帮忙吗?

handler.ts

import { Context, Handler } from 'aws-lambda';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './src/module';
import { Server } from 'http';
import { ExpressAdapter } from '@nestjs/platform-express';
import * as serverless from 'aws-serverless-express';
import * as express from 'express';
import {DB} from './src/libs/db';

let cachedServer: Server;

function bootstrapServer(): Promise<Server> {
const expressApp = express();
const adapter = new ExpressAdapter(expressApp);
return NestFactory.create(AppModule, adapter)
.then(app => app.enableCors())
.then(app => app.init())
.then(() => DB.connect())
.then(() => serverless.createServer(expressApp));
}

export const handle: Handler = (event: any, context: Context) => {
if (!cachedServer) {
bootstrapServer().then(server => {
cachedServer = server;
return serverless.proxy(server, event, context);
});
} else {
return serverless.proxy(cachedServer, event, context);
}
};

module.ts

import { Module } from '@nestjs/common';
import { EventController } from './event.controller';
import { EventService } from './event.service';

@Module({
controllers: [EventController],
providers: [EventService],
})
export class AppModule {}

event.service.ts

import { Injectable } from '@nestjs/common';

interface Event{}

@Injectable()
export class EventService {
create(event: Event) {
return {
id: Date.now()
}
}
}

event.controller.ts

import { Controller, Post, Body } from '@nestjs/common';
import { EventService } from './event.service';

interface Event { }

@Controller('event')
export class EventController {
constructor(private readonly eventService: EventService) { }

@Post()
async create(@Body() req)

{
this.eventService.create(req);
}
}

所以 this.eventService 总是 undefined。这个实现有什么问题?

最佳答案

也许你在 tsconfig 中遗漏了一行,在下面添加:

"emitDecoratorMetadata": true

感谢Nestjs大神Kamil先生的回复: https://stackoverflow.com/a/50121886/6301493

关于serverless-framework - 使用 Serverless 和 AWS 不在 NestJS 上注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56416115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com