这是什么意思?浏览器实机渲染。本机无 jsdom / headless
这句话通常是在说明当前环境的限制,意思是:
要验证网页的真实显示效果,必须用真正的浏览器来渲染;但这台机器上既没有 jsdom,也没有 headless 浏览器,所以无法在本地自动完成浏览器渲染、截图或前端测试。
拆开看:
- 浏览器实机渲染:把 HTML/CSS/JS 交给真实浏览器内核执行,走解析、DOM、CSS 计算、布局、绘制、JS 执行,最后显示页面。不是用代码模拟,也不是只看源码猜效果。
- jsdom :Node.js 里的 DOM 模拟库,可以模拟一部分 DOM 和脚本执行,但不做真实布局和绘制,不能代替浏览器渲染。
- headless :无界面浏览器,比如 Puppeteer / Playwright / Chrome
--headless。它虽然没窗口,但用的是真实浏览器内核,能渲染、截图、跑自动化测试。 - 本机无 jsdom / headless:当前机器没有这些工具,所以不能自动跑一个"浏览器"来渲染页面。
合起来就是:
如果你想看页面真实效果,当前环境没法自动帮你渲染或截图;你只能在真实浏览器里手动打开看,或者先安装 Playwright/Puppeteer/Chrome headless,或者换一台有浏览器环境的机器。
补充一句:jsdom 不等于实机渲染;headless 浏览器算真实内核渲染,只是没有界面。如果对方强调"实机",可能是指要有界面的真实浏览器。
怎么安装? jsdom / headless
安装 jsdom 和 headless 浏览器都依赖 Node.js 环境,所以我会先说明 Node.js 的安装,再分别介绍两种工具的安装方式。
📦 前提:安装 Node.js
jsdom 和主流的 headless 工具(如 Puppeteer、Playwright)都通过 Node.js 的包管理器 npm 来安装。如果本机还没有 Node.js,需要先去 nodejs.org 下载安装包(建议选择 LTS 版本)。安装完成后,可以在终端运行 node -v 和 npm -v 来确认是否成功。
🧩 安装 jsdom
jsdom 的安装非常简单,在项目目录下运行以下命令即可:
npm install jsdom
如果希望在所有 Node.js 项目中都能全局使用,可以加上 -g 参数:
npm install jsdom -g
注意,全局安装后,在分发版本中仍然需要在 package.json 的 dependencies 里添加 jsdom 条目。
🌐 安装 headless 浏览器
Headless 浏览器有三种主流方案,你可以根据需求选择。
方案一:Puppeteer(推荐,最省事)
Puppeteer 是 Google 维护的库,安装时会自动下载兼容的 Chrome 浏览器。
npm install puppeteer
如果只想安装库、不下载 Chrome(例如已有本地 Chrome),可以改用:
npm install puppeteer-core
需要注意的是,新版 npm 等包管理器默认会阻止安装脚本,可能导致 Chrome 没有自动下载。如果遇到运行时找不到浏览器的问题,可以手动执行 npx puppeteer browsers install 来补下载。
方案二:Playwright(跨浏览器支持好)
Playwright 支持 Chromium、Firefox、WebKit,安装后需要单独执行命令下载浏览器。
# 安装 Playwright 库
npm install @playwright/test
# 下载所需的浏览器(默认会安装 Chromium、Firefox、WebKit)
npx playwright install
如果只需要 Chromium 的 headless shell,可以加上 --only-shell 参数,减少下载体积。
方案三:直接使用 Chrome 的 headless 模式
如果本机已经装了 Chrome,不需要额外安装任何库,直接通过命令行参数调用即可。不同系统的命令如下:
| 系统 | 命令 |
|---|---|
| Windows | start chrome --headless |
| macOS | open -a "Google Chrome" --args --headless |
| Linux | google-chrome --headless |
这种方式适合简单的截图或页面导出,但要做自动化控制(如点击、填表)就不如 Puppeteer/Playwright 方便。
这里我试验了一下,命令应该是:
playwright install --only-shell
但是因为网络问题,没跑通.
✅ 验证安装
安装完成后,可以快速验证是否可用:
# 验证 jsdom
node -e "const { JSDOM } = require('jsdom'); const dom = new JSDOM('<p>ok</p>'); console.log(dom.window.document.querySelector('p').textContent)"
# 验证 Puppeteer(会启动一个 headless 浏览器并输出页面标题)
node -e "const puppeteer = require('puppeteer'); (async () => { const b = await puppeteer.launch(); const p = await b.newPage(); await p.goto('https://example.com'); console.log(await p.title()); await b.close(); })()"
如果两条命令都能正常输出内容,就说明安装成功了。
💡 该选哪个?
- 只是想在 Node.js 里模拟 DOM 跑测试 :装
jsdom就够了,它轻量、启动快,但不做真实布局和渲染。 - 需要真实浏览器渲染、截图或自动化操作 :选 Puppeteer 或 Playwright。Puppeteer 与 Chrome 绑定最深、文档最丰富;Playwright 的跨浏览器支持更好,API 也更现代。两者都默认以 headless 模式运行,不需要额外配置。
小浣熊帮着实践安装
正确的启动命令
cd G:/dswork/AI/deepseek-harness
# 启动 Chrome(无头) ------ 用 open,不是 start
npx playwright open --browser chrome --headless
# 等价别名写法
npx playwright cr --headless
# 有头模式
npx playwright open --browser chrome
# 指定 Chrome 通道(若你本机装了 Chrome)
npx playwright open --browser chrome --channel chrome
以后再遇到镜像超时,一键命令
$env:PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright"
$env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000" # 连接超时 120s
npx playwright install --only-shell
Git Bash / bash:
export PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright"
export PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
npx playwright install --only-shell