如何将绝对路径传入NodejsFunction的entry属性?
解决NodejsFunction entry属性传入绝对路径的问题
你碰到的Error: Only JavaScript or TypeScript entry files are supported是因为**entry属性要求传入TS/JS文件的路径字符串,而不是函数对象转成的文本**。你当前写的incident.handler.toString()会把函数转为字符串,完全不符合该属性的要求。
结合你的文件夹结构,正确的做法是用path模块拼接出处理器文件的绝对路径,传给entry:
修正后的createLambda.ts代码
import * as path from 'path'; new NodejsFunction(this, functionName, { handler: 'handler', runtime: Runtime.NODEJS_18_X, // 根据createLambda.ts的位置,拼接正确的绝对路径到incident.ts entry: path.join(__dirname, '../../../libs/handlers/incident.ts'), role, memorySize: 512 });
关键说明
- entry的正确用法:
entry必须指向你的Lambda处理器源文件(即libs/handlers/incident.ts)的绝对路径。用path.join(__dirname, ...)可以基于当前文件(createLambda.ts)的位置动态计算目标文件路径,避免硬编码路径带来的适配问题。 - 无需导入处理器函数:NodejsFunction会自行读取
entry指定的文件,并根据handler字段(这里是'handler')找到文件中导出的对应函数,所以不需要提前导入incident对象。 - 路径别名不适用entry:你tsconfig里的
@customer别名是编译时的路径映射,entry属性不支持这种别名,必须传入真实的文件路径。
内容的提问来源于stack exchange,提问作者Franz
相关产品推荐
相关产品推荐

