Node.js项目AWS Elastic Beanstalk部署失败:缺失node-linux-arm64/package.json
解决AWS Elastic Beanstalk Node.js项目启动失败:npm安装依赖时找不到node-linux-arm64/package.json
问题重现
项目此前在AWS Elastic Beanstalk(平台:Node.js 16 running on 64bit Amazon Linux 2/5.6.3)正常运行数月,圣诞假期后启动失败,eb-engine.log报错如下:
[INFO] Executing instruction: Use NPM to install dependencies [INFO] use npm to install dependencies [INFO] Running command /bin/sh -c npm config set jobs 1 [INFO] Running command /bin/sh -c npm --production install npm ERR! code 1 npm ERR! path /var/app/staging/node_modules/node npm ERR! command failed npm ERR! command sh -c node installArchSpecificPackage npm ERR! node:internal/modules/cjs/loader:936 npm ERR! throw err; npm ERR! ^ npm ERR! npm ERR! Error: Cannot find module 'node-linux-arm64/package.json' npm ERR! Require stack: npm ERR! - /var/app/staging/node_modules/node/installArchSpecificPackage.js npm ERR! at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) npm ERR! at Function.resolve (node:internal/modules/cjs/helpers:108:19) npm ERR! at ChildProcess.<anonymous> (/var/app/staging/node_modules/node-bin-setup/index.js:19:27) npm ERR! at ChildProcess.emit (node:events:527:28) npm ERR! at maybeClose (node:internal/child_process:1092:16) npm ERR! at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) { npm ERR! code: 'MODULE_NOT_FOUND', npm ERR! requireStack: [ npm ERR! '/var/app/staging/node_modules/node/installArchSpecificPackage.js' npm ERR! ] npm ERR! }
解决方案
1. 移除不必要的node npm包
多数Node.js项目不需要依赖npm上的node包(EB平台已提供Node.js运行环境),直接在package.json中删除该依赖,执行npm install更新锁文件后重新部署。
2. 清理npm缓存并重建依赖
- 本地操作:
提交更新后的npm cache clean --force rm -rf node_modules package-lock.json npm install --productionpackage-lock.json重新部署即可。 - EB环境级清理:在项目根目录创建
.ebextensions/01-clean-cache.config,添加以下内容强制部署前清理缓存:container_commands: 01_clean_npm_cache: command: "npm cache clean --force"
3. 检查并修正EB环境架构
登录EB控制台,查看环境的实例类型是否被切换为ARM64架构(如t4g系列)。若项目依赖的node包不支持ARM64,可切换回x86_64实例类型(如t3系列)。
4. 强制npm安装x86_64架构包(适用于ARM实例)
若需保留ARM架构实例,可在.ebextensions中配置强制npm安装x64架构的依赖:
创建.ebextensions/02-force-x64-arch.config:
container_commands: 01_npm_install_x64: command: "npm install --production --arch=x64"
内容的提问来源于stack exchange,提问作者Lewis Smallwood
相关产品推荐
相关产品推荐

