![](/img/trans.png)
[英]How to convert typescript class to plain javascript object with class-transformer
[英]Serverless with TypeScript, convert from plain JavaScript
我有一段 JavaScript 代码,我想将其转换为 TypeScript
目前我有这两个文件:
API_Responses.js
const Responses = {
_200(data = {}) {
return {
statusCode: 200,
body: JSON.stringify(data),
};
}
};
module.exports = Responses;
getData.js
const Responses = require('./API_Responses');
exports.handler = async event => {
const response = {
payload: event?.pathParameters || ''
}
return Responses._200(response);
};
用于部署该 lambda 函数的serverles.yml
文件是:
functions:
getData:
handler: getData.handler
events:
- http:
path: get-data/{ID}
method: GET
cors: true
我想使用ts
文件并import
ES6 方法。
所以我尝试了这个改变:
API_Responses.ts
export const Responses = {
_200(data = {}) {
return {
statusCode: 200,
body: JSON.stringify(data),
};
}
};
getData.ts
import Responses from './API_Responses';
// But here I'm confused
const handler = async event => {
const response = {
payload: event?.pathParameters || ''
}
return Responses._200(response);
};
export default handler;
serverless.yml
functions:
getData:
handler: getData.handler
events:
- http:
path: get-data/{ID}
method: GET
cors: true
通过这种方式我得到错误:“Runtime.ImportModuleError:错误:找不到模块'getData'”,
您似乎在这两个版本(vanilla javascript 和 typescript 版本)之间更改了serverless.yml
文件。
被调用的函数的名称仍然是“handler”,但在serverless.yml
文件中你调用的是“getData”(对应于文件名)
无服务器框架是围绕已部署的普通 JavaScript 函数构建的。 编译后它不知道您的文件名。
如果您使用 ts-node 或手动编译.ts
文件,您可以随时检查生成的输出源代码,该代码将被执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.