VSTS Hosted Linux Preview中Karma+ChromeHeadless运行Angular6测试报错求助
解决VSTS Hosted Linux Preview上ChromeHeadless依赖缺失的问题
这个问题很典型——Hosted Linux Preview环境默认没有预装ChromeHeadless运行所需的系统级依赖库,哪怕Puppeteer自带了Chrome二进制文件,也得依赖这些系统库才能启动。下面是具体的解决步骤:
1. 在CI构建中添加系统依赖安装步骤
在你的VSTS构建流程里,在执行单元测试命令(比如ng test)之前,添加一个Shell脚本任务,运行以下命令来安装缺失的依赖:
sudo apt-get update sudo apt-get install -y libxss1 libxtst6 libnss3 libatk-bridge2.0-0 libgtk-3-0 libgbm1 libasound2
这些包是ChromeHeadless在Ubuntu环境下运行的核心依赖,你遇到的libXss.so.1就包含在libxss1包里,安装后就能解决这个缺失问题。
2. 确认Karma配置的正确性
你的karma.conf.js配置已经做了正确的核心设置:
- 指定了Puppeteer的Chrome路径
- 使用了
ChromeNoSandbox启动器并加上--no-sandbox参数(Linux容器环境必须加这个,否则Chrome会因权限问题启动失败)
如果后续还是有启动异常,可以尝试把--disable-gpu也加入flags里,某些Linux环境可能需要这个参数来规避GPU相关的兼容问题:
customLaunchers: { ChromeNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox', '--headless', '--disable-gpu'], }, },
3. 验证构建流程
把安装依赖的步骤加入后,重新运行CI构建,应该就能正常启动ChromeHeadless并执行单元测试了。
内容的提问来源于stack exchange,提问作者Imran
相关产品推荐
相关产品推荐

