Deno单元测试调用puppeteer.launch触发os error 2无文件或目录报错
报错根因
No such file or directory (os error 2) 报错触发在puppeteer.launch()行,完全是Puppeteer依赖相关问题,和测试业务逻辑无关:Deno环境下的Puppeteer默认不会自动下载绑定的Chromium/Chrome浏览器二进制,启动时找不到可执行的浏览器程序就会抛出这个系统级错误。
修复方案
按以下步骤排查处理即可:
- 先确认本地已安装Chrome/Chromium浏览器,记录好可执行文件的本地路径,常见默认路径参考:
- Windows:
C:\Program Files\Google\Chrome\Application\chrome.exe - macOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Linux:
/usr/bin/google-chrome或/usr/bin/chromium
- Windows:
- 在
puppeteer.launch()配置项中显式指定浏览器可执行文件路径,修改后的启动代码如下:
const browser = await puppeteer.launch({ headless: true, // 替换为你本地的Chrome/Chromium实际安装路径 executablePath: "/usr/bin/google-chrome" })
- 如果不想手动安装浏览器,也可以使用Deno适配版本的Puppeteer,运行测试时追加参数自动下载对应版本浏览器:
注意运行测试时需要给Deno开放对应权限:deno test --allow-all --unstable your_test_file.ts --puppeteer-product=chrome--allow-read、--allow-write(用于缓存下载的浏览器文件)、--allow-run(用于启动浏览器子进程)、--allow-net(用于页面访问、下载浏览器资源),本地测试环境可以直接用--allow-all简化配置。 - 如果你是通过npm兼容模式导入的Puppeteer,先执行
npx puppeteer browsers install chrome手动下载对应版本的浏览器,再运行测试即可。
内容的提问来源于stack exchange,提问作者yeet yeet
相关产品推荐
相关产品推荐

