【发布时间】:2019-10-18 08:16:34
【问题描述】:
大家,
我正在尝试设置我的第一个 NestJS 应用程序。它由 AWS 上的无服务器支持。
我创建了一个简单的控制器,它有一个服务作为依赖项。当我使用 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 呢?可以分享一下吗?
-
你确定你真的需要 AWS Lambda 中的 Nest.js 吗?它增加了你的“冷启动”。您的用户/前端可能会不时地等待 10 秒以等待 Lambda 的响应。
-
嗨 Victor 我正在尝试使用 AWS lambda 设置我的 nestjs 项目,我无法获得任何有关将 nestjs 与 AWS 集成的特定文档,您能否给我一些信息或您遵循的任何特定文档?谢谢
标签: serverless-framework nestjs aws-serverless