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

升级Node.js至18.x后AWS Lambda出现No Such File错误

问题分析与修复建议

核心原因推测

Cloud9部署Node.js 18.x版本Lambda函数时,默认打包逻辑大概率发生了变化——旧版本运行时(如16.x及以下)会自动包含项目根目录下的public文件夹,但18.x环境下,部署包可能未正确将public目录及其文件纳入,导致Lambda运行时找不到目标文件。

修复方案

  • 检查部署包内容
    手动导出Cloud9生成的部署ZIP包,解压后确认public文件夹是否存在:

    1. 在Cloud9中右键项目根目录,选择"Download"获取ZIP包
    2. 本地解压后查看是否包含public目录及内部HTML文件
      若缺失,说明打包过程未包含这些文件,需调整部署配置。
  • 调整Cloud9部署配置
    在Cloud9的Lambda部署设置中明确指定要包含的文件/目录:

    1. 打开Cloud9的"Deploy"面板,选择对应Lambda函数
    2. 找到"Deployment Settings",在"Include Files"中添加public/**/*(表示包含public下所有文件和子目录)
    3. 重新部署函数后验证问题是否解决。
  • 改用更稳定的绝对路径写法
    Node.js 18.x在Lambda环境中__dirname的行为可能有变化,尝试结合process.cwd()拼接路径:

    const path = require('path');
    const headerPath = path.join(process.cwd(), 'public', 'header.html');
    // 后续用fs.readFile读取headerPath即可
    

    process.cwd()在Lambda 18.x环境中指向函数代码的根目录,路径稳定性更高。

  • 检查文件权限
    部署包中文件权限不正确也可能导致读取失败,在Cloud9中通过命令调整:

    chmod -R 755 public/
    chmod 644 public/*.html
    

    确保目录具备可访问权限,文件具备可读权限。

  • 本地模拟Lambda环境测试
    使用aws-lambda-local工具在Cloud9本地模拟Node.js 18.x环境运行函数,排查路径问题:

    npm install -g aws-lambda-local
    aws-lambda-local -l index.js -e event.json -r nodejs18.x
    

    若本地模拟也报错,说明代码或路径配置本身存在问题;若本地正常,则问题出在Cloud9的部署打包环节。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:06:00