【问题标题】:Serverless framework and path mapping from tsconfig.json don't work来自 tsconfig.json 的无服务器框架和路径映射不起作用
【发布时间】:2019-12-03 23:45:52
【问题描述】:

我在 tsconfig.json 文件中定义了这样的路径映射

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

它适用于ts-node -r tsconfig-paths/register,但是当涉及到借助serverless-plugin-typescript 插件从.ts 编译到.js 文件的lambda 时,它就不起作用了。

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

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

我正在尝试切换到serverless-plugin-typescript 以将.ts 文件编译为.js 文件。之前,我使用 webpacktsconfig-paths-webpack-plugin 并且有效,但我想避免使用 webpack 来编译 lambda。

【问题讨论】:

  • 你有什么解决办法吗?

标签: typescript webpack serverless-framework serverless tsconfig


【解决方案1】:

经过大量挖掘,我发现 serverless 不支持 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 目录进行并提交所有更改

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 2019-07-16
    • 2021-02-10
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多