Node.js Typescript为编译的导入路径配置映射
我有一个aws amplify项目,它使用的是纱线工作区 我的项目有一个lambda函数和一个层。当lambda函数在aws中运行时,它需要从图层导入我的库Node.js Typescript为编译的导入路径配置映射,node.js,typescript,amazon-web-services,aws-amplify,yarn-workspaces,Node.js,Typescript,Amazon Web Services,Aws Amplify,Yarn Workspaces,我有一个aws amplify项目,它使用的是纱线工作区 我的项目有一个lambda函数和一个层。当lambda函数在aws中运行时,它需要从图层导入我的库 import MyLib from '/opt/nodejs/build/MyLib'; 但是,当我在本地运行此函数时,我希望从本地文件系统导入库 import MyLib from '/Users/sive/Documents/SWT/wake-book/amplify/backend/function/wakebookLayer/li
import MyLib from '/opt/nodejs/build/MyLib';
但是,当我在本地运行此函数时,我希望从本地文件系统导入库
import MyLib from '/Users/sive/Documents/SWT/wake-book/amplify/backend/function/wakebookLayer/lib/nodejs/build/MyLib';
如何告诉typescript将导入从/opt/nodejs/build/MyLib
编译到本地文件系统上的位置
我尝试在tsconfig.json中使用
"baseUrl": ".",
"paths": {
"/opt/nodejs/build/MyLib": ["./amplify/backend/function/wakebookLayer/lib/nodejs/build/MyLib.d.ts"]
},
这将停止vscode抱怨未知导入,因此它被正确地“链接”(我可以单击我的导入路径/opt/nodejs/build/MyLib
路径,并进入完整的文件系统路径。)
但是编译后的js仍然使用错误的路径
编译的js文件如下所示
const MyLib\u 1=\uu importDefault(require(“/opt/nodejs/build/MyLib”)代码>
我希望它能重新映射导入路径,并且看起来像这样
const MyLib_1=\uu importDefault(require(“/Users/sive/Documents/SWT/wake book/amplify/backend/function/wakebookLayer/lib/nodejs/build/MyLib”)代码>
如果我手动编辑输出js,使其具有完整的文件系统路径(我可以在本地运行我的项目)
我是否误解了路径映射的工作原理
有没有办法达到我想要的行为
TypeScript从2.4开始支持。这让你可以有条件地导入其他模块/库。我可以开始工作了。但它仍然感觉像一个黑客。我宁愿在编译时而不是在运行时这样做。另外,我不喜欢我必须重新定义MyLib的类型(第7行)。