我有这个本地TypeScript文件,该文件在部署时最终位于服务器的/opt
目录中。因此,如果文件位于本地layers/websocketapi/DataSender.ts
,则将其部署到opt/DataSender.js
。
但是,当我在本地开发该项目时,它不在我的opt目录中,因此Typescript抱怨它找不到此模块。但是,如果我将其更改为引用本地版本,则部署将中断,因为它不再引用服务器上实际位于的/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
,但不更改import语句?
答案 0 :(得分:0)
您可以在paths
文件中添加tsconfig.json
映射,以将导入路径/opt/*
映射到真实路径layers/websocketapi/*
{
"compilerOptions": {
...
"baseUrl": ".",
"paths": {
"/opt/*": ["layers/websocketapi/*"]
}
}
...
}
相对于baseUrl
解析了路径,有关路径映射的更多信息可以在打字稿文档https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping中找到