使用atlassian/default-image:3无法安装serverless的求助
解决Bitbucket流水线全局安装Serverless的权限错误
问题场景
使用Bitbucket流水线的atlassian/default-image:3镜像(预装Node.js v14.17.5、npm 6.14.14)构建Serverless应用时,执行npm install -g serverless全局安装工具,触发权限错误,核心报错如下:
sh: 1: node: Permission denied
后续Serverless的postinstall脚本因权限问题执行失败,导致安装终止。
解决方案
1. 带--unsafe-perm参数安装
npm以root用户全局安装包时,默认会切换到非特权用户执行postinstall脚本,引发权限不足。添加--unsafe-perm参数可强制以root身份运行所有安装脚本:
npm install -g serverless --unsafe-perm
2. 指定兼容版本安装
尝试安装3.25.1以外的稳定版本,避免版本特定的权限问题:
npm install -g serverless@3.24.0 --unsafe-perm
3. 本地安装替代全局安装
将Serverless作为项目开发依赖安装,通过npx调用命令,绕开全局权限问题:
# 项目内安装依赖 npm install serverless --save-dev # 流水线中执行Serverless命令 npx serverless deploy
4. 调整npm全局目录权限
手动配置npm全局安装路径并赋予权限,再执行安装:
mkdir -p ~/.npm-global npm config set prefix '~/.npm-global' export PATH=~/.npm-global/bin:$PATH npm install -g serverless
内容的提问来源于stack exchange,提问作者Dev1ce
相关产品推荐
相关产品推荐

