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

使用CDK创建Lambda函数时出现Error - ENOENT错误求助

问题分析与解决方案

1. 路径错误引发ENOENT

ENOENT错误本质是CDK无法定位你指定的index.js文件。请确认CDK代码中entry的路径配置:

  • 若CDK代码与authorizer文件夹同级,entry应设为./authorizer/lib/index.js
  • 若CDK代码在其他目录,建议使用绝对路径避免相对路径混乱,示例:
    import { join } from 'path';
    // 假设CDK代码在根目录下的cdk文件夹中
    entry: join(__dirname, '../../authorizer/lib/index.js')
    

同时确保handler参数与index.js中导出的函数名一致(比如你的函数导出为exports.handler = ...,则handler设为handler)。

2. 打包配置未包含node_modules

你的需求是将node_modules一同打包,需根据CDK使用的Lambda构造函数调整配置:

方案一:直接打包整个目录(推荐)

使用lambda.Function配合AssetCode将authorizer目录下所有文件(含node_modules)打包为zip:

import * as lambda from 'aws-cdk-lib/aws-lambda';
import { join } from 'path';

const authLambda = new lambda.Function(this, 'AuthorizerLambda', {
  code: lambda.AssetCode.fromAsset(join(__dirname, '../authorizer')), // 打包整个authorizer目录
  handler: 'lib/index.handler', // 格式为「文件路径.导出函数名」
  runtime: lambda.Runtime.NODEJS_20_X,
});

此方式会完整保留authorizer内的目录结构,Lambda执行时可直接访问node_modules中的依赖。

方案二:调整NodejsFunction的打包策略

若你使用NodejsFunction(默认用esbuild打包),需配置让其保留外部依赖:

import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as nodejs from 'aws-cdk-lib/aws-lambda-nodejs';
import { join } from 'path';

const authLambda = new nodejs.NodejsFunction(this, 'AuthorizerLambda', {
  entry: join(__dirname, '../authorizer/lib/index.js'),
  handler: 'handler',
  runtime: lambda.Runtime.NODEJS_20_X,
  bundling: {
    externalModules: ['*'], // 标记所有依赖为外部模块,不打包进代码
  },
});

注意:需确保authorizer目录下已安装好依赖,CDK会自动将node_modules包含进打包文件。

3. 修正项目结构(关键)

根据你提供的结构,package.json和node_modules与authorizer同级,这会导致Lambda执行时,代码在lib/目录下,而依赖在根目录,require调用会找不到模块。建议调整为以下结构:

/authorizer
    /lib
       -index.js
    -package.json
    -node_modules
    -package.lock.json

将所有Lambda相关文件放在authorizer目录内,确保依赖与代码层级匹配。

验证打包结果

部署前可检查cdk.out目录下生成的zip包,解压后确认:

  • lib/index.js存在且路径正确
  • node_modules完整包含在内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:18:14