AWS CodeDeploy部署失败:after_install.sh脚本执行报错求助
解决AWS CodeDeploy AfterInstall脚本失败(puppeteer@1.20.0安装错误)
针对你遇到的root用户执行after_install.sh时退出码1、npm依赖缺失及puppeteer@1.20.0安装失败问题,以下是针对性解决方案:
1. 补全puppeteer依赖的系统库
puppeteer@1.20.0对系统底层库有严格依赖,即使你检查过通用包,也可能缺少这些必备组件。在before_install.sh或after_install.sh开头添加:
apt-get update && apt-get install -y libxss1 libasound2 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libx11-6 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libxrender1 libxtst6
这些库是puppeteer安装和运行的核心依赖,老版本无法自动适配缺失的库。
2. 允许root用户执行npm安装
npm默认限制root用户执行npm install(避免权限风险),这会导致puppeteer的install.js脚本无法正常运行。解决方法:
- 在执行
npm install时添加参数:
npm install --unsafe-perm=true
- 或者在脚本开头设置全局环境变量:
export npm_config_unsafe_perm=true
3. 确保部署目录与环境兼容
- 切换到部署目录后再执行npm命令:
cd /home/ubuntu/node/build/deployment && npm install --unsafe-perm=true
- 验证Node.js和npm版本:puppeteer@1.20.0要求Node.js ≥8.9.0、npm ≥5.6.0,可在脚本中添加检查:
node -v && npm -v
4. 开启脚本调试定位问题
如果以上步骤无效,在after_install.sh第一行添加调试开关,捕获详细执行日志:
set -xe
该命令会打印每一步执行的命令和输出,你可以在AWS CodeDeploy的部署日志中查看具体失败环节。
内容的提问来源于stack exchange,提问作者Harihararaman M
相关产品推荐
相关产品推荐

