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

Bitbucket Pipeline部署EC2实例遇yarn未找到问题求助

问题排查与解决

1. 解决'yarn not found'的核心问题

远程SSH执行命令时,默认是非交互式、非登录Shell,不会加载.bashrc/.profile这类用户级环境配置文件——而你手动登录EC2时用的是交互式登录Shell,能正常读取yarn的路径配置,这就是差异所在。

具体修复方式:

  • 使用yarn绝对路径执行:先在EC2上跑which yarn获取绝对路径(比如/home/ubuntu/.yarn/bin/yarn),然后把命令替换成:
    cd /home/ubuntu/api/ && /home/ubuntu/.yarn/bin/yarn && /home/ubuntu/.yarn/bin/yarn build
    
  • 强制加载环境配置:在执行命令前先加载用户配置文件,比如:
    source ~/.bashrc && cd /home/ubuntu/api/ && yarn && yarn build
    
    或者直接用登录Shell执行命令:
    ssh -i your-key.pem ubuntu@ec2-xxx.compute.amazonaws.com 'bash -l -c "cd /home/ubuntu/api/ && yarn && yarn build"'
    

2. deploy.sh脚本执行失败的补充排查

如果用脚本也出现同样问题,检查这几点:

  • 脚本开头是否指定登录Shell:把首行改成#!/bin/bash -l,强制加载环境配置
  • 脚本中显式设置PATH:在脚本开头添加:
    export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
    
  • 确认Pipeline的SSH连接用户和你手动登录的用户一致(比如都是ubuntu),避免权限或环境差异

3. 另一套Pipeline拉取成功但构建失败的排查

  • 先验证代码完整性:远程执行ls -l /home/ubuntu/api/,确认拉取的文件是否完整
  • 检查权限问题:比如构建时是否有写入dist等目录的权限,可临时在命令前加sudo测试(长期建议调整目录权限,而非依赖sudo)
  • 输出完整错误日志:把构建命令改成cd /home/ubuntu/api/ && yarn build 2>&1,将错误信息全部输出,方便定位具体失败原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:57:04