ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Super Productivity 单元测试报 “No binary for Chrome browser“ 时怎么配置 CHROME_BIN?

Super Productivity 单元测试报 “No binary for Chrome browser“ 时怎么配置 CHROME_BIN? Super Productivity 单元测试报 No binary for Chrome browser 时怎么配置 CHROME_BIN【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity在 super-productivity 仓库中跑单元测试或执行git push时你可能在终端看到这样的报错ERROR [launcher]: No binary for Chrome browser on your platform. Please, set CHROME_BIN env variable.这个错误来自 Karma单元测试通过 Karma 在 headless Chrome 中执行对应 src/karma.conf.js 里的ChromeHeadless自定义启动器base: Chrome而karma-chrome-launcher找不到可用的 Chrome 可执行文件。由于仓库的pre-pushgit hook 会执行npm run lint npm run testChrome 二进制不可解析时git push也会直接失败所以这个错误必须在本地环境里彻底解决。Karma 定位浏览器的顺序是优先读CHROME_BIN环境变量找不到再回退到系统安装的 Chrome。下面的两条路径都能让npm test和git push恢复工作选一条执行即可。先判断你的 Chrome 为什么没被找到Linux 下karma-chrome-launcher只会自动探测真正的 Google Chrome探测google-chrome/google-chrome-stable不会探测发行版自带的chromium/chromium-browser。因此装的是发行版 Chromium 包不会被自动识别必须显式设置CHROME_BIN装的是 Snap 版 Chromium同样不会被自动探测launcher 不查/snap/bin/chromium需要显式设置装的是 Flatpak 版文档明确不推荐。没有可直接指给CHROME_BIN的独立可执行文件只能用脚本包一层flatpak run org.chromium.Chromium $而且沙箱会拦截 Karma 的临时 profile 目录通常启动失败。建议改用原生 Google Chrome 包或下面的方案 B。方案 A使用系统安装的 Google Chrome用你的操作系统包管理器安装 Google Chrome。安装完成后不需要设置CHROME_BINlauncher 会自动探测到google-chrome/google-chrome-stable直接跑npm test验证即可。如果用的是Snap版 Chromium把它写进 shell profile如~/.zshrc、~/.bashrcexport CHROME_BIN/snap/bin/chromium方案 B安装 Chrome for Testing 并设置 CHROME_BIN适合没有原生 Google Chrome 包、或希望固定浏览器版本的环境。1. 下载固定的 Chrome for Testing 构建以下命令把构建安装到~/.cache/puppeteer文档中所有示例均使用该目录npx puppeteer/browsers install chromestable --path $HOME/.cache/puppeteer--path参数是必要的puppeteer/browsersCLI 默认把下载位置设为当前工作目录漏掉该参数会在仓库里生成一个不受版本控制的./chrome/目录且下面第 2 步的find会匹配不到任何文件。2. 将解析出的路径写入 shell profile把下面这一行加进你的 shell profile~/.zshrc、~/.bashrc等。必须写在 profile 里而不是临时会话中因为 git hook 运行在非交互式 shell 中只有 profile 里设置的变量才能被git push触发时读到# Looks for the Chrome for Testing binary in ~/.cache/puppeteer/chrome, sorted by version so the latest version is picked if you happen to have multiple export CHROME_BIN$(find $HOME/.cache/puppeteer/chrome -name chrome -type f | sort -V | tail -n1)macOS 注意macOS 上可执行文件位于.app包内、名为Google Chrome for Testing上面的-name chrome过滤条件匹配不到它改用# Same idea, but matches the macOS executable inside the .app bundle export CHROME_BIN$(find $HOME/.cache/puppeteer/chrome -type f -name Google Chrome for Testing -path *Contents/MacOS* | sort | tail -n1)sort -V | tail -n1的作用是按版本排序取最新如果你目录下恰好装了多个版本会挑最新的那个。3. 重新加载 shell 并验证变量重新加载 shell或source你的 profile后执行echo $CHROME_BIN # should print a path $CHROME_BIN --version # should print a Chrome version第一条应打印出一个文件路径第二条应打印出 Chrome 版本号。两条都正常说明CHROME_BIN已正确指向一个可执行的浏览器。确认问题解决CHROME_BIN设置生效后npm test与git push经pre-pushhook无需再做其他配置。跑一次npm testKarma 不再报 No binary for Chrome browser 即表示配置完成此后正常git push即可。更多开发环境配置背景可参考 Set Up Development Environment浏览器启动参数--headless、--no-sandbox、--remote-debugging-port9222等定义在 src/karma.conf.js 的ChromeHeadless启动器中其中--no-sandbox是为在 Docker 内运行 Chrome 所必需的。【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表