当前位置: 代码网 > it编程>编程语言>Javascript > typescript 支持与本地调试配置详解

typescript 支持与本地调试配置详解

2024年05月15日 Javascript 我要评论
typescript 支持与本地调试在上一章节,我们创建了一个hello world函数,并把它顺利的部署到了aws云上。然而真正上生产的函数项目肯定不会这么简单。对于一个现代的nodejs项目来说,

typescript 支持与本地调试

在上一章节,我们创建了一个 hello world 函数,并把它顺利的部署到了aws云上。然而真正上生产的函数项目肯定不会这么简单。

对于一个现代的 nodejs 项目来说,我们还有许多的需求:

比如我们也更想使用 typescript 来进行开发,还有我们也需要在本地搭建一套完整的模拟环境,来对我们编写的代码进行调试和测试。

比如我们要添加对应的单元测试和 ci/cd

又或者是我们的函数里面,各种第三方的依赖项的处理,js 相关的还好,但是其他那些和平台绑定的 二进制文件,又或者是内置的 .xdb 等等一些数据文件,应该如何处理呢?请听我娓娓道来.

支持 typescript

我们想要用 ts 来编写函数进行调试和部署,幸运的是 serverless 为我们提供了开箱即用的插件:

 当然,除了插件方案之外,当然也有非 serverless 插件的传统打包方案,即直接使用 tsc 或者 webpack/rollup/esbuild 又或者进一步封装的 tsup/unbuild 等等这些工具,直接构建出 dist 产物,然后 sls deploy 直接部署 dist 里代码文件的方案。

这个传统打包方案,我们下一篇文章《serverless nodejs 项目打包最佳实践》会详细介绍。

这些插件的用法非常简单,我们只需要在安装它们之后,再把它们注册进你的 serverless.yml 文件中就可以了。

比如 serverless-plugin-typescript, 我们先安装 npm i -d serverless-plugin-typescript

然后在 serverless.yml 中注册:

接下来执行 sls packge 命令(sls deploy的前置打包成压缩包步骤),插件就会自己去找当前目录下的 tsconfig.build.json(上面tsconfigfilelocation指定的路径)配置,去编译 ts 代码,然后打入将被上传的压缩包里。

打包后,你可以在你配置的 tsconfig 里 outdir 目录下,找到编译生成的结果,并进行校验。

函数的本地调试

我们本地环境,去调试编写的云函数,比较方便的做法,主要有 2 种:

  • 一种为执行 sls invoke local -f <function name> -d/-p ... 进行直接调试
  • 另外一种为通过 serverless-offline 插件,在本地构建出模拟的 lambda 和 api网关环境 进行调试,显然这种调试方式非常适合 web 服务。

注意,因为整个项目是 typescript 编写的,而实际运行却是 js 文件,所以你编译时,必须打开 sourcemap 选项才能命中到 ts源码里的断点,不然只能把断点命中到 .build/.esbuild 里 js 产物的代码。

启用 node-terminal 调试

这个方式很简单,因为 node-terminal 开箱即用的,

  • 一种方法,我们直接在 vscode 下方的终端窗口,点击加号旁边的下拉icon,添加 javascript 调试终端,然后再cd到目标目录中,执行对应的调试 npm script 即可。
  • 另外一种方法是利用 .vscode/launch.json 去维护我们的调试脚本,同时在 vscode debug 界面进行调试。

配置类似于下方:

下方章节的 invoke local 和 serverless-offline 都直接使用上述的 vscode 配置示例进行调试。

invoke local

sls invoke local -f <function name> -d/-p ... 这个命令是直接调用本地函数进行调试.

其中 function name 是函数名,也就是我们在 serverless.yml 中注册的名字。

后面加的 -d/-p 用来控制传入的 event 对象。

-d 是 --data 的缩写,代表直接把跟在后面的字符串作为 json 传入函数进行调用。

而 -p(--path的缩写)其实功能类似,不过 -p 是传入一个 json 文件的路径作为参数,读取之后传入函数进行调用,所以我更推荐使用 -p

serverless-offline

serverless-offline 插件是在本地模拟出一个 lambda 和 api gateway 的环境进行部署,再起一个 http server 监听端口,这样来进行调试。

这种调试方法,其实和我们调试 express/koa 项目是非常类似的。不同的是,我们的路由不在我们的代码里进行注册,而在于 serverless.yml 里函数对应网关的配置。

serverless-offline 插件注册也非常的简单:

注册完成之后,使用 sls offline 命令,即可启动,看到:

出现上述结果,代表已经启动完成,此时它的调试也只需要像我们调试 express/koa/nest 那样,直接在 vscode 里打断点,即可命中。

next chapter

现在你已经学会了如何在本地调试代码和用 typescript 来编写函数了。

下一篇,《依赖项的处理与层的创建与注册》中,将会详细解释依赖项的处理,欢迎阅读。

完整示例及文章仓库地址

https://github.com/sonofmagic/serverless-aws-cn-guide

以上就是typescript 支持与本地调试配置详解的详细内容,更多关于typescript本地调试配置的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com