如何告诉Typescript编译器此处定义了此模块



我有这个本地打字稿文件,当部署时,最终在我的服务器的/opt目录中。因此,如果文件位于本地layers/websocketapi/DataSender.ts,则将其部署到opt/DataSender.js。但是,当我在本地开发该项目时,它不在我的Opt Directory中,所以打字稿抱怨它找不到此模块。但是,如果我将其更改为引用本地版本,则我的部署中断,因为它不再引用/opt目录实际位于服务器上的位置。

如果我使用 // @ts-ignore注释,则错误会消失,但是我没有得到类型支持,并且假设是any的类型。

这是我的代码:

import { APIGatewayEvent } from 'aws-lambda';
// @ts-ignore
import DataSender from '/opt/DataSender';
export async function handler(event: APIGatewayEvent) {
  const dataSender = new DataSender();
  await dataSender.sendData(event.requestContext.connectionId!, { message: 'hi!' })
  return {
    statusCode: 200,
    body: 'Game created'
  }
}

如何告诉Typescript编译器我要从OPT目录导入的此文件实际上位于layers/websocketapi/DataSender.js,但不要更改导入语句?

您可以将paths映射添加到tsconfig.json文件中以将导入路径/opt/*映射到真实的路径layers/websocketapi/*

{
  "compilerOptions": {
    ...
    "baseUrl": ".",
    "paths": {
        "/opt/*": ["layers/websocketapi/*"]
    }
  }
  ...
}

路径相对于baseUrl解决,有关路径映射的更多信息可以在typescript文档上找到https://www.typescriptlang.org/docs/docs/handbook/mmodule-resolution.html.html#path-path-path-path-path-pather

相关内容

  • 没有找到相关文章

最新更新