{"id":13498575,"url":"https://github.com/serverless-components/tencent-nestjs","last_synced_at":"2026-03-15T01:20:30.765Z","repository":{"id":53769990,"uuid":"272347665","full_name":"serverless-components/tencent-nestjs","owner":"serverless-components","description":null,"archived":false,"fork":false,"pushed_at":"2021-03-22T08:13:34.000Z","size":49,"stargazers_count":25,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-20T15:01:32.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serverless-components.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-15T05:11:47.000Z","updated_at":"2023-11-20T08:27:57.000Z","dependencies_parsed_at":"2022-09-03T19:42:54.188Z","dependency_job_id":null,"html_url":"https://github.com/serverless-components/tencent-nestjs","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverless-components%2Ftencent-nestjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverless-components%2Ftencent-nestjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverless-components%2Ftencent-nestjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverless-components%2Ftencent-nestjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serverless-components","download_url":"https://codeload.github.com/serverless-components/tencent-nestjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247203000,"owners_count":20900889,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T21:00:37.027Z","updated_at":"2026-03-15T01:20:25.622Z","avatar_url":"https://github.com/serverless-components.png","language":"JavaScript","readme":"⚠️⚠️⚠️ 所有框架组件项目迁移到 [tencent-framework-components](https://github.com/serverless-components/tencent-framework-components).\n\n# Serverless Nest.js\n\n**腾讯云 Nest.js 组件** ⎯⎯⎯ 通过使用 [Serverless Framework](https://github.com/serverless/components/tree/cloud)，基于云上 Serverless 服务（如网关、云函数等），实现“0”配置，便捷开发，极速部署你的 Nest.js 应用。\n\n\u003e 注意：本项目仅支持使用 [ExpressAdapter](https://docs.nestjs.com/faq/http-adapter) 的 Nest.js 项目。\n\n### 安装\n\n通过 npm 安装最新版本的 Serverless Framework\n\n```bash\n$ npm install -g serverless\n```\n\n### 创建\n\n通过如下命令和模板链接，快速创建一个 Nest.js 应用：\n\n```bash\n$ npm i -g @nestjs/cli\n$ nest new serverless-nestjs\n$ cd serverless-nestjs\n```\n\n执行如下命令，安装应用的对应依赖\n\n```\n$ npm install\n```\n\n### 项目改造\n\n1. 由于云端函数执行时不需要监听端口的，所以我们需要修改下入口文件 `src/main.ts`，如下：\n\n```typescript\nimport { NestFactory } from '@nestjs/core'\nimport { join } from 'path'\nimport { AppModule } from './app.module'\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule)\n\n  return app\n}\n\n// 注意: 通过注入 NODE_ENV 为 local，来方便本地启动服务，进行开发调试\nconst isLocal = process.env.NODE_ENV === 'local'\nif (isLocal) {\n  bootstrap().then((app) =\u003e {\n    app.listen(3000, () =\u003e {\n      console.log(`Server start on http://localhost:3000`)\n    })\n  })\n}\n\n// 导出启动函数，给 sls.js 使用\nexport { bootstrap }\n```\n\n2. 项目根目录下新增 `sls.js` 文件，用来提供给 Nest.js 组件使用：\n\n```js\n// 注意: 根据实际项目入口文件名进行修改，此 demo 为默认情况\nconst { bootstrap } = require('./dist/main')\n\nmodule.exports = bootstrap\n```\n\n\u003e 注意：实际开发可根据个人项目路径，来导出启动函数 `bootstrap`。\n\n### 部署\n\n在项目根目录下创建`serverless.yml`文件，填写基本配置：\n\n```\n# severless.yml\n\ncomponent: nestjs # (必填) 组件名称，在该项目中为nestjs.\nname: nestjsDemo # (必填) 组件实例名称.\n\n# 组件配置参数，不填写则使用默认配置\ninputs:\n  src:\n    src: ./\n    exclude:\n      - .env\n```\n\n由于 Nest.js 项目是 TypeScript，部署前需要编译成 JavaScript 后再部署：\n\n```bash\n$ npm run build\n$ sls deploy\n```\n\n第一次部署可能耗时相对较久，但后续的二次部署会在几秒钟之内完成。部署完毕后，你可以在命令行的输出中查看到你 nestjs 应用的 URL 地址，点击地址即可访问你的 Nest.js 项目。\n\n\u003e **注意：**\n\u003e\n\u003e 1、如您的账号未 [登录](https://cloud.tencent.com/login) 或 [注册](https://cloud.tencent.com/register) 腾讯云，您可以直接通过 `微信` 扫描命令行中的二维码进行授权登陆和注册。\n\u003e\n\u003e 2、如果希望查看更多部署过程的信息，可以通过`sls deploy --debug` 命令查看部署过程中的实时日志信息，`sls`是 `serverless` 命令的缩写。\n\n### 配置\n\nnestjs 组件支持 0 配置部署，也就是可以直接通过配置文件中的默认值进行部署。但你依然可以修改更多可选配置来进一步开发该 nestjs 项目。\n\n以下是 nestjs 组件的 `serverless.yml` 简单配置示例：\n\n```yml\n# serverless.yml\n\n#应用配置\napp: appDemo # (可选) 应用名称，默认为与组件实例名称\nstage: dev # (可选)  用于开发环境的隔离，默认为 dev\n\n#组件配置\ncomponent: nestjs # (必填) 组件名称，在该项目中为nestjs.\nname: nestjsDemo # (必填) 组件实例名称.\n\n#组件参数\ninputs:\n  src:\n    src: ./ # (可选) 代码路径\n    exclude:\n      - .env\n  functionName: nestjsDemo\n  region: ap-guangzhou\n  runtime: Nodejs10.15\n  apigatewayConf:\n    protocols:\n      - http\n      - https\n    environment: release\n```\n\n点此查看[全量配置及配置说明](https://github.com/serverless-components/tencent-nestjs/tree/master/docs/configure.md)\n\n当你根据该配置文件更新配置字段后，再次运行 `serverless deploy` 或者 `serverless` 就可以更新配置到云端。\n\n### 远程调试云函数\n\n部署了 nestjs.js 应用后，可以通过开发调试能力对该项目进行二次开发，从而开发一个生产应用。在本地修改和更新代码后，不需要每次都运行 `serverless deploy` 命令来反复部署。你可以直接通过 `serverless dev` 命令对本地代码的改动进行检测和自动上传。\n\n可以通过在 `serverless.yml`文件所在的目录下运行 `serverless dev` 命令开启开发调试能力。\n\n`serverless dev` 同时支持实时输出云端日志，每次部署完毕后，对项目进行访问，即可在命令行中实时输出调用日志，便于查看业务情况和排障。\n\n除了实时日志输出之外，针对 Node.js 应用，当前也支持云端调试能力。在开启 `serverless dev` 命令之后，将会自动监听远端端口，并将函数的超时时间临时配置为 900s。此时你可以通过访问 chrome://inspect/#devices 查找远端的调试路径，并直接对云端代码进行断点等调试。在调试模式结束后，需要再次部署从而将代码更新并将超时时间设置为原来的值。详情参考[开发模式和云端调试](https://cloud.tencent.com/document/product/1154/43220)。\n\n### 查看\n\n在`serverless.yml`文件所在的目录下，通过如下命令查看部署状态：\n\n```\n$ serverless info\n```\n\n### 移除\n\n在`serverless.yml`文件所在的目录下，通过以下命令移除部署的 nestjs 服务。移除后该组件会对应删除云上部署时所创建的所有相关资源。\n\n```\n$ serverless remove\n```\n\n和部署类似，支持通过 `sls remove --debug` 命令查看移除过程中的实时日志信息，`sls`是 `serverless` 命令的缩写。\n\n## 账号配置\n\n当前默认支持 CLI 扫描二维码登录，如您希望配置持久的环境变量/秘钥信息，也可以本地创建 `.env` 文件\n\n```console\n$ touch .env # 腾讯云的配置信息\n```\n\n在 `.env` 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存\n\n如果没有腾讯云账号，可以在此[注册新账号](https://cloud.tencent.com/register)。\n\n如果已有腾讯云账号，可以在[API 密钥管理](https://console.cloud.tencent.com/cam/capi)中获取 `SecretId` 和`SecretKey`.\n\n```\n# .env\nTENCENT_SECRET_ID=123\nTENCENT_SECRET_KEY=123\n```\n\n## License\n\nMIT License\n\nCopyright (c) 2020 Tencent Cloud, Inc.\n","funding_links":[],"categories":["组件"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverless-components%2Ftencent-nestjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserverless-components%2Ftencent-nestjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverless-components%2Ftencent-nestjs/lists"}