typescript - 来自 tsconfig.json 的无服务器框架和路径映射不起作用
问题描述
我在 tsconfig.json 文件中定义了一个路径映射,如下所示
"paths": {
"~/*": ["./src/*"]
}
并且它适用于ts-node -r tsconfig-paths/register
,但是当涉及在插件的帮助下编译.ts
成文件的 lambdas 时,它不起作用。.js
serverless-plugin-typescript
我不能再在我的 lambdas 中这样做import * as db from '~/db/psql';
了。
我知道为什么,这没关系,但我该怎么做才能让它发挥作用。
我正在尝试切换到serverless-plugin-typescript
将文件编译.ts
为.js
文件。以前,我使用webpack并且效果很好tsconfig-paths-webpack-plugin
,但我想避免使用 webpack 来编译 lambdas。
解决方案
经过大量挖掘,我发现无服务器不支持 typescript 提供的路径选项。
对于其他任何人来说,选项似乎是:
1)复制代码
2) 利用 Webpack 插件覆盖 servlesss 并允许在 typescript 中设置 rootDir
3) 将您的共享模块代码符号链接到您的每个微服务目录。我编写了一个 bash 脚本,它将一个名为“_shared”的目录符号链接到一个名为“微服务”的父目录下一级的所有目录:
find microservices ! -path microservices -type d -maxdepth 1 -d -exec ln -s ../../_shared ./{} \;
然后,您需要将每个符号链接添加到您的 .gitignore:
/microservices/**/_shared
所以项目的工作流程是:
第一次克隆 repo 时,运行 bash 脚本来创建符号链接
当您在微服务子一级目录中时,从同一级别的符号链接中引用来自 _shared 的导入
对顶级 _shared 目录进行并提交所有更改
推荐阅读
- php - 通过 Amazon API Gateway 和网络负载均衡器使用 Nginx 设置 Wordpress 时面临重定向问题
- go - Golang编译错误:导出函数中未定义的私有函数“findCluster”
- wordpress - 将 WordPress 安装到 WordPress 站点的子目录中?
- elasticsearch - elasticsearch中搜索查询中_score字段的规范化
- android - 如何修复 No Adapter Attach 跳过布局
- javascript - Vue.js中如何使用数据设置其他数据
- c - 如何在两台不同的机器上运行 client-servet TCP/IP 程序?
- javascript - style.display = 'none' 模态上的点击事件跳转到页面顶部
- python - 在python中加密密码
- ruby-on-rails - 我如何发送/使用/修改由我的 rails 应用程序的 Sidekiq 后台工作人员生成的数据?