首页 > 解决方案 > 来自 tsconfig.json 的无服务器框架和路径映射不起作用

问题描述

我在 tsconfig.json 文件中定义了一个路径映射,如下所示

"paths": {
      "~/*": ["./src/*"]
    }

并且它适用于ts-node -r tsconfig-paths/register,但是当涉及在插件的帮助下编译.ts成文件的 lambdas 时,它不起作用。.jsserverless-plugin-typescript

我不能再在我的 lambdas 中这样做import * as db from '~/db/psql';了。

我知道为什么,这没关系,但我该怎么做才能让它发挥作用。

我正在尝试切换到serverless-plugin-typescript将文件编译.ts.js文件。以前,我使用webpack并且效果很好tsconfig-paths-webpack-plugin,但我想避免使用 webpack 来编译 lambdas。

标签: typescriptwebpackserverless-frameworkserverlesstsconfig

解决方案


经过大量挖掘,我发现无服务器不支持 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

所以项目的工作流程是:

  1. 第一次克隆 repo 时,运行 bash 脚本来创建符号链接

  2. 当您在微服务子一级目录中时,从同一级别的符号链接中引用来自 _shared 的导入

  3. 对顶级 _shared 目录进行并提交所有更改


推荐阅读