我在tsconfig.json文件中定义了这样的路径映射
"paths": {
"~/*": ["./src/*"]
}
它适用于ts-node -r tsconfig-paths/register
,但是当涉及到在插件的帮助下从.ts
编译到.js
文件的 lambda 时serverless-plugin-typescript
它不起作用。
我不能再在我的 lambdaimport * as db from '~/db/psql';
中这样做了。
我知道为什么,这没关系,但是我能做些什么来让它工作。
我正在尝试切换到serverless-plugin-typescript
以将.ts
文件编译为.js
文件。以前,我使用 webpack 和tsconfig-paths-webpack-plugin
并且有效,但我想避免使用webpack来编译 lambda。
经过大量挖掘,我发现无服务器不支持打字稿提供的路径选项。
对于其他任何人,选项似乎是:
1)复制代码
2)利用Webpack插件覆盖servless,并允许在打字稿中设置rootDir
。3) 将共享模块代码符号链接到每个微服务目录。我编写了一个 bash 脚本,它将一个名为"_shared"的目录符号链接到名为"微服务"的父目录下一级的所有目录:
find microservices ! -path microservices -type d -maxdepth 1 -d -exec ln -s ../../_shared ./{} ;
然后,您需要将每个符号链接添加到您的 .gitignore 中:
/microservices/**/_shared
因此,该项目的工作流程是:
首次克隆存储库时,运行 bash 脚本以创建符号链接
当您位于微服务子一级目录中时,引用从同一级别的符号链接导入_shared
对顶级目录进行并提交所有更改_shared