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

AWS Lambda执行npm命令报EROFS只读文件系统错误该如何解决?

问题根因

你已经切换到了可写的/tmp目录执行命令,但npm默认会尝试在当前用户的家目录(报错中的/home/sbx_user1051)读写缓存、全局配置相关文件,而AWS Lambda除/tmp外的所有目录均为只读,因此触发了EROFS错误。

可行解决方案

  • 修改npm默认路径到/tmp目录
    直接在执行命令中指定npm的缓存、前缀路径到可写的/tmp下即可,修改后的代码如下:

    exec('cd /tmp/ && NPM_CONFIG_CACHE=/tmp/.npm NPM_CONFIG_PREFIX=/tmp/.npm-global npm ci && ng build --prod="true"', (error, stderr, stdout) => {
          if (error) {
            console.log(error);
            return reject(error);
            }
          });
    

    也可以提前通过npm config命令配置:

    cd /tmp/ && npm config set cache /tmp/.npm --global && npm config set prefix /tmp/.npm-global && npm ci && ng build --prod="true"
    
  • 调整Angular构建的相关路径
    如果ng构建过程中也出现目录读写错误,可以额外指定Angular的缓存、输出路径到/tmp:

    ng build --prod="true" --cache-path /tmp/.angular-cache --output-path /tmp/dist
    
  • 调整Lambda临时存储配置
    AWS Lambda默认的/tmp目录容量为512MB,如果你的项目依赖较多、构建产物较大,可以在Lambda配置中将临时存储(Ephemeral Storage)上限调整到最高10GB,避免磁盘空间不足报错。

  • 确认运行时依赖完整性
    要确保你使用的Lambda运行时中已经包含node、npm、ng等可执行命令,如果没有预装,可以把对应依赖打包到Lambda部署包中,或者在执行命令前将node_modules/.bin加入环境变量PATH:

    export PATH=/tmp/node_modules/.bin:$PATH
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:04