Node.js Typescript为编译的导入路径配置映射

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

我有一个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/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行)。