You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将绝对路径传入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
});

关键说明

  1. entry的正确用法:entry必须指向你的Lambda处理器源文件(即libs/handlers/incident.ts)的绝对路径。用path.join(__dirname, ...)可以基于当前文件(createLambda.ts)的位置动态计算目标文件路径,避免硬编码路径带来的适配问题。
  2. 无需导入处理器函数:NodejsFunction会自行读取entry指定的文件,并根据handler字段(这里是'handler')找到文件中导出的对应函数,所以不需要提前导入incident对象。
  3. 路径别名不适用entry:你tsconfig里的@customer别名是编译时的路径映射,entry属性不支持这种别名,必须传入真实的文件路径。

内容的提问来源于stack exchange,提问作者Franz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:02:19