资讯考证相关

PageSpy 远程调试平台快速上手:从工作原理到 Node.js / Docker 一键部署

2026/10/12 3:37:25 安证通 考证咨询 特种作业
PageSpy 远程调试平台快速上手:从工作原理到 Node.js / Docker 一键部署
前端开发工具调试器【免费下载链接】page-spy-webA remote debugging platform youll definitely find useful. Lightweight, cross-platform, out-of-box debugging tool项目地址https://gitcode.com/gh_mirrors/pa/page-spy-web点击查看免费下载本文基于当前仓库中的 README_JA.md与 README_ZH.md 同源编写面向 Web、React Native、小程序、HarmonyOS 等多端项目的开发者帮助你理解 PageSpy 的远程调试原理、典型适用场景并掌握 Node.js 与 Docker 两种开箱即用的自托管部署方式。读完本文你将能够独立完成 PageSpy 服务端的安装、启动、配置与常见问题排查。PageSpy 是什么为本地控制台无能为力的场景而生PageSpy是一款用于调试 Web、React Native、小程序、HarmonyOS 应用等跨平台项目的开源远程调试工具。它的核心设计是对客户端原生 API 做一层封装——当页面调用console、网络请求、本地存储等方法时SDK 会在方法实际执行前对入参进行过滤与转换再按统一格式序列化通过 WebSocket 发送给调试端调试端收到数据后以接近本地开发者工具DevTools控制台的界面直观呈现出来。这一封装原生 API → 序列化 → 实时传输 → 调试端可视化的链路正是 PageSpy 与普通日志上报类工具的本质区别它不是事后看日志而是把本地调试的体验搬到远程。调试端具备哪些面板能力从仓库中的官方文档 introduction.zh.mdx 可以看到PageSpy 在提供调试功能的基础上扩展出在线实时调试与离线日志回放两大场景其中在线实时调试包含五个核心面板Console 面板显示console.log | info | warn | error | debug输出的日志信息并支持向客户端发送代码、远程执行Network 面板显示客户端发出的网络请求信息ElementPage面板显示客户端当前界面可查看 HTML 节点树Storage 面板查看客户端本地的缓存数据Cookie、LocalStorage 等System 面板显示客户端系统信息辅助排查兼容性问题。当有新数据产生或数据发生变化时调试端会实时收到通知。此外配合 DataHarborPlugin 与 RRWebPlugin 两个插件还可以实现离线日志回放像看录像一样重现用户操作轨迹与当时的运行数据详见 offline-log.zh.mdx。源码侧的支撑从仓库结构看page-spy-web 同时承载调试端前端与服务端两个角色前端调试界面位于 src/pages/DevtoolsConsole、Network、Element、Storage、System 各面板路由定义见 src/routes/config.tsx服务端入口位于 backend/main.go通过embed.FS将构建产物dist内嵌进 Go 二进制然后调用serve.Run()启动 HTTP 与 WebSocket 服务服务端依赖 backend/go.mod 中声明的github.com/HuolalaTech/page-spy-api v1.11.0作为核心运行库。何时使用 PageSpy三类典型场景凡是无法在本地使用控制台调试的场景都是 PageSpy 可以大显身手的时候。原文档列举了三类典型场景本地调试 H5、WebView 应用移动端屏幕太小传统调试面板操作不便、显示不友好且日志容易出现截断远程办公、跨地区协同邮件、电话、视频会议等传统沟通方式效率低故障信息不完整容易产生误解或误判用户终端白屏等问题排查数据监控、日志分析等传统手段依赖排障人员对业务和技术的深入理解在用户设备上收窄问题原因通常很慢。PageSpy 正是面向存在上述问题的团队而打造其目标是把调试能力下沉到任何一台能打开浏览器的终端上。快速开始一使用 Node.js 部署为了让数据掌握在自己手中并降低自建部署门槛PageSpy 提供了多种开箱即用的部署方式。第一种是全局安装 NPM 包huolala-tech/page-spy-api# 使用 yarn yarn global add huolala-tech/page-spy-apilatest # 使用 npm npm install -g huolala-tech/page-spy-apilatest安装完成后在终端执行page-spy-api启动服务。服务就绪后在浏览器中打开http://localhost:6752即可访问调试端。本地验证通过后可将同一套部署推送到你的服务器。仓库内的官方安装文档 deploy-with-node.zh.mdx 给出了等价的写法yarn global add huolala-tech/page-spy-apilatest page-spy-api。从源码看 NPM 包的二进制分发机制huolala-tech/page-spy-api并非一个普通的 JS 包它通过optionalDependencies按平台分发编译好的原生可执行文件。这一点在 package.json 中可见一斑huolala-tech/page-spy-api被声明在optionalDependencies中版本与仓库版本同步为2.4.9。具体机制体现在 backend/publish/install.js根据process.platform os.arch() os.endianness()匹配当前平台支持win32-arm、win32-arm64、win32-x64amd64、darwin-arm64、darwin-x64、linux-arm、linux-arm64、linux-x64等平台组合分别对应page-spy-api-win32-arm、page-spy-api-linux-amd64等独立子包如果用户以--no-optional安装导致平台二进制缺失安装脚本会先尝试用 npm 安装对应平台包失败后再直接从 npm registry 下载.tgz并解压出二进制downloadDirectlyFromNPM脚本还针对中文环境做了优化当LANG以zh_CN开头时会优先从https://registry.npmmirror.com源安装失败后自动回退到官方源。而 backend/publish/page-spy-api.js 则是一个 shim 启动器它定位到当前平台的二进制路径然后用execFileSync以继承 stdio 的方式执行真正的二进制把命令行参数原样透传——这就是全局安装后page-spy-api命令能直接工作的原因。快速开始二使用 Docker 部署如果你更倾向容器化部署可以直接拉取官方镜像docker run -d --restartalways -v ./log:/app/log -v ./data:/app/data -p 6752:6752 --namepageSpy ghcr.io/huolalatech/page-spy-web:latest逐项拆解这条命令的参数含义参数作用-d后台运行容器--restartalways容器异常退出后自动重启-v ./log:/app/log将宿主机./log目录映射到容器的/app/log持久化日志数据-v ./data:/app/data将宿主机./data目录映射到容器的/app/data持久化数据库等数据-p 6752:6752将容器 6752 端口映射到宿主机 6752 端口--namepageSpy指定容器名称容器运行后在浏览器中打开http://localhost:6752。注意如果容器被销毁未映射到宿主机的数据也会一并丢失因此务必保留-v的目录映射详见 faq.zh.mdx 中关于离线日志持久化的说明。从 Dockerfile 看镜像结构仓库根目录的 Dockerfile 采用两阶段构建构建阶段基于golang:1.23先下载backend/go.mod、backend/go.sum声明的依赖再以CGO_ENABLED0 GOOSlinux交叉编译出静态二进制main静态编译意味着镜像无需携带动态库体积更小、更易分发运行阶段基于alpine:latest仅将编译好的/app/main拷入并以/app/main作为启动命令——这与 backend/main.go 中内嵌 dist 前端产物、单一二进制启动的设计完全吻合。因此Docker 镜像本质上就是Go 服务端二进制 内嵌前端页面的合体一个镜像即可提供完整的调试平台。部署后的服务端配置config.jsonPageSpy 服务端在运行时自动读取当前运行目录下的config.json配置文件。该文件在初次运行时并不存在你可以根据需要创建或修改它来自定义服务端行为可配置内容包括运行端口、多实例部署、跨域配置、日志数据配置、数据库配置等。完整字段说明见 server-configuration.zh.mdx这里给出带注释的完整示例{ // 服务端口 port: 6752, // 日志回放文件最大大小MB maxLogFileSizeOfMB: 10240, // 日志回放文件最长保存时间小时 maxLogLifeTimeOfHour: 720, // 是否允许用户在界面上删除日志 notAllowedDeleteLog: false, // 最大允许房间数量 maxRoomNumber: 500, // 跨域配置 corsConfig: { // 允许的域名 allowOrigins: [*], // 允许的请求头 allowHeaders: [ Origin, Authorization, Content-Length, X-Request-Id, Content-Type, Referer, User-Agent, Host ], // 允许的请求方法 allowMethods: [ HEAD, POST, GET, OPTIONS, PUT, DELETE, UPDATE ], // 暴露的请求头 exposeHeaders: [X-Request-Id] }, // 符合 S3 协议的存储配置 storageConfig: { baseDir: , keyId: , secret: , bucket: , region: , endpoint: , // s3ForcePathStylefalse 表示 virtual-hosted-style API默认情况 // s3ForcePathStyletrue 表示 path-style API s3ForcePathStyle: false }, // 认证配置 authConfig: { // 认证密码 password: , // JWT 密钥 jwtSecret: , // 令牌过期时间小时 tokenExpiration: 720 }, // 多实例部署时配置为当前机器 IP 或容器中的 DNS name selfRpcAddress: { ip: , port: }, // 多实例部署配置 rpcAddress: [ { ip: , port: }, { ip: , port: } ], // 配置 MySQL 数据库地址默认使用 SQLite databaseConfig: { mysqlUrl: user:passtcp(127.0.0.1:3306)/dbname?charsetutf8mb4parseTimeTruelocLocal } }几个值得注意的要点存储与数据库默认使用 SQLite 本地存储对应依赖见 backend/go.mod 中的modernc.org/sqlite、glebarez/sqlite配置databaseConfig.mysqlUrl后可切换为 MySQL对应gorm.io/driver/mysql。离线日志文件默认保存在运行目录的log目录下。认证保护从 2.3.0 版本起PageSpy 支持通过环境变量为调试端设置访问密码与authConfig对应的环境变量为AUTH_PASSWORD、JWT_SECRET、JWT_EXPIRATION_HOURSToken 过期时间默认 24 小时。设置密码后开发者访问调试面板必须输入正确密码。启动方式为# Docker 方式 docker run -d --restartalways -v ./log:/app/log -v ./data:/app/data -p 6752:6752 --namepageSpy \ -e AUTH_PASSWORDpassword -e JWT_SECRETsecret -e JWT_EXPIRATION_HOURShours \ ghcr.io/huolalatech/page-spy-web:latest # Node 方式 AUTH_PASSWORDpassword JWT_SECRETsecret JWT_EXPIRATION_HOURShours page-spy-api日志容量控制默认最多保存最新 10GB、最长 30 天即maxLogFileSizeOfMB: 10240与maxLogLifeTimeOfHour: 720可通过修改配置自定义。客户端如何接入以浏览器为例部署好服务端后即可在客户端项目中接入 SDK。以浏览器为例完整说明见 browser.zh.mdx通过script引入时 SDK 会自动从引入路径分析服务端地址!-- PageSpy SDK -- script crossoriginanonymous src{deployUrl}/page-spy/index.min.js/script !-- 插件非必须但建议使用 -- script crossoriginanonymous src{deployUrl}/plugin/data-harbor/index.min.js/script script crossoriginanonymous src{deployUrl}/plugin/rrweb/index.min.js/script script window.$harbor new DataHarborPlugin(); window.$rrweb new RRWebPlugin(); [window.$harbor, window.$rrweb].forEach(p { PageSpy.registerPlugin(p) }) window.$pageSpy new PageSpy(); /script其中DataHarborPlugin用于缓存离线日志并提供上传/下载能力离线回放的基础RRWebPlugin基于 rrweb 记录用户操作轨迹两者通常配合使用。小程序WeChat / Alipay / UniApp / Taro、React Native、HarmonyOS 也都有对应的 SDK 包与接入流程分别见 miniprogram.zh.mdx、react-native.zh.mdx、harmony.zh.mdx。关于实例化参数如api、clientOrigin、enableSSL、useSecret、gesture、disabledPlugins等的完整说明可查阅 pagespy.zh.mdx 中的 PageSpy API 文档。常见问题与运维要点服务器上 6752 端口访问不通检查服务器防火墙或安全组规则是否放行了 6752 端口参考 faq.zh.mdx。调试按钮提示当前连接不存在客户端通常意味着 SDK 已创建房间但无法通过 WebSocket 加入可打开客户端控制台查看是否出现WebSocket connect failed相关报错据此检查服务端配置。Nginx 反向代理需要显式开启 WebSocket 升级支持location / { proxy_pass http://127.0.0.1:6752; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; }部署到子路径1.5.4 版本起支持子路径部署除调整 Nginx 的rewrite规则外实例化时需要手动传参window.$pageSpy new PageSpy({ api: host/sub-path, // 例如 api: example.com/pagespy clientOrigin: scheme://host/sub-path, // 例如 https://example.com/pagespy });升级到最新版本Docker 方式先docker pull ghcr.io/huolalatech/page-spy-web:latest再停止并删除旧容器后重新docker runNPM 方式执行yarn global upgrade huolala-tech/page-spy-apilatest或npm install -g huolala-tech/page-spy-apilatest后重启进程。房间生命周期从服务端实现看房间在创建后无 SDK 或调试端进入 1 分钟、SDK 与调试端均已断开 1 分钟、长时间无数据交互 5 分钟以及连接持续超过 1 小时等条件下会被自动销毁。参与贡献与延伸阅读PageSpy 采用 MIT 协议开源见 LICENSE。如果你想参与贡献可以阅读仓库的 CONTRIBUTING_ZH.md英文版见 CONTRIBUTING.md。进一步了解模块组成、兼容性、权限认证、插件机制等细节推荐继续阅读仓库内的官方文档常见问题FAQ服务端配置说明离线日志回放插件开发指南PageSpy API 文档赞分享前端开发工具调试器【免费下载链接】page-spy-webA remote debugging platform youll definitely find useful. Lightweight, cross-platform, out-of-box debugging tool项目地址https://gitcode.com/gh_mirrors/pa/page-spy-web点击查看免费下载相关推荐PageSpy 远程调试平台架构原理与 Node.js、Docker 一键部署实战PageSpy 远程调试平台架构原理与 Node.js、Docker 一键部署实战 本文以 page spy web 仓库的 README 为核心脉络系统梳前端开发工具调试器5分钟快速上手PageSpy从安装到调试的完整流程5分钟快速上手PageSpy从安装到调试的完整流程 想要像Chrome开发者工具一样远程调试你的Web应用吗PageSpy就是你的终极解决方案这个强大的前前端开发工具调试器AppCut容器化部署终极指南从零到一快速上手Docker部署AppCut容器化部署终极指南从零到一快速上手Docker部署 AppCut作为开源视频编辑工具通过Docker容器化部署可以快速搭建完整的视频处理环境。本音视频前端桌面应用上一篇Windows安卓应用安装指南告别笨重模拟器的终极解决方案下一篇FoundationDB 8.0 版本发布全解析API 800、Native CDC 与备份体系重构创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文仅供参考,具体政策以官方公告为准 返回资讯列表 →
延伸阅读

更多相关内容

相关资讯、最新动态、本周本月更新,都在这里。

电工证55岁以后还能干吗?保姆级教程拆解薪资与出路

电工证55岁以后还能干吗?保姆级教程拆解薪资与出路

电工证55岁以后还能干吗?保姆级教程拆解薪资与出路 急需特种作业证才能上岗找工作,这不仅是年轻人的焦虑,更是很多大龄从业者深夜里睡不着的疙瘩。特别是手里攥着低压或高压电工证,一转眼年龄过了50,心里直打鼓: 电工证55岁以后 还有没有市场?会不会被工地拒之门外?为了把这事说透,我整理了一份…

查看 →
Python | 串口调试助手脚本实现(带GUI界面)

Python | 串口调试助手脚本实现(带GUI界面)

""" 串口调试助手 v1.2 功能:支持RS232/485通信、HEX收发、自动检测端口、数据记录 开发环境:Python 3.8 Tkinter pyserial """ import tkinter as tk from tkinter import ttk, scrolledtext, messagebox, filedialog …

查看 →
Java+SSM+Django高校党建系统:双技术栈架构设计与实践解析

Java+SSM+Django高校党建系统:双技术栈架构设计与实践解析

开篇:一个项目标题背后,其实藏着一套完整的开发思路前段时间好几个读者在后台问我,说看到“基于JavaSSMDjango高校大学生党建系统”这样一个毕设题目,完全不知道从哪儿下手。这个标题乍一看有点绕——又是Java又是SSM又是Django&a…

查看 →
科研论文绘图工作流:Python+Inkscape+LaTeX三级出版级方案

科研论文绘图工作流:Python+Inkscape+LaTeX三级出版级方案

1. 这不是又一个“论文绘图工具”广告,而是一次坦诚的自我解剖“论文绘图工具——毛遂自荐”,这个标题乍看有点拗口,甚至带点文人气的自谦,但背后藏着一个非常现实、非常具体、也非常普遍的痛点:科研人员在论文写作后期…

查看 →
图像法矿石粒度分析:基于Matlab的粒径统计与系统实现

图像法矿石粒度分析:基于Matlab的粒径统计与系统实现

矿石粒度分析这几年在砂石骨料、选矿、破碎生产里的需求越来越大。以前大家熟悉的是人工筛分:取样、搬运、振动筛,一套下来没有一两个小时出不了结果,现场粉尘还大。用Matlab写矿石粒度分析系统软件,核心就是石料粒径特性统计——…

查看 →
在佛山怎么报考电工证复审延期怎么办理

在佛山怎么报考电工证复审延期怎么办理

佛山考电工证实操总挂科?这份上岗必备避坑指南请收好 手里拿着电工证,心里却慌得一批?别笑,这大概是绝大多数准备在佛山考电工证或者刚拿到证的朋友最真实的写照。尤其是实操考试,那是真的让人心里没底,怕挂科、怕补考、怕耽误上岗时间。毕竟,这张证书是电工岗位的 上岗必备…

查看 →
工厂要多少电工证?郑州报考避坑指南与跨省转籍实操解析

工厂要多少电工证?郑州报考避坑指南与跨省转籍实操解析

工厂要多少电工证?郑州报考避坑指南与跨省转籍实操解析 老铁们,之前考的证在外省能不能转过来?这是很多在郑州打工或者准备进厂的朋友最头疼的事。别急,今天咱不整虚的,直接上干货。很多人以为电工证是“一地办一地用”,其实国家安全生产监督管理局早就打通了全国联网查询系统。只要你的证是 国家安全生产考试网…

查看 →
盘锦市盘山县低压电工证怎么考?网上查询攻略防坑

盘锦市盘山县低压电工证怎么考?网上查询攻略防坑

盘锦市盘山县低压电工证怎么考?网上查询攻略防坑 别怕考不过白交培训费,其实只要搞懂 盘锦市盘山县低压电工证 的正规渠道,拿证率能稳在90%以上。很多新手一上来就被野鸡机构忽悠,钱交了证没影,最后还得自己 网上查询 真伪,那真是赔了夫人又折兵。…

查看 →
考电工证两天能拿证吗?附官方报名入口避坑指南

考电工证两天能拿证吗?附官方报名入口避坑指南

考电工证两天能拿证吗?附官方报名入口避坑指南 最怕什么?花了钱去培训,结果考试没考过,钱打了水漂,时间也浪费了。很多南阳的朋友在咨询时,第一句话就是:“听说考电工证只要两天,是不是交钱就能拿证?”…

查看 →
泰安电工证怎样规划复审?网上查询防过期指南

泰安电工证怎样规划复审?网上查询防过期指南

泰安电工证怎样规划复审?网上查询防过期指南 手里那张电工操作证突然显示“过期”或者“临期”,心里是不是咯噔一下?别慌,这是很多持证电工最头疼的时刻:不知道复审要提前多久,更不知道去哪里确认自己的状态。很多人第一反应是打电话问朋友,但最稳妥的办法其实是 网上查询…

查看 →
庆阳市安监局电工证到底值不值得考 3天搞定考试

庆阳市安监局电工证到底值不值得考 3天搞定考试

庆阳市安监局电工证到底值不值得考 3天搞定考试 工地太忙,根本没时间复习考试,这大概是绝大多数一线电工兄弟最真实的写照。手里干着活,脑子想着证,想考吧,怕考不过白花钱;不考吧,又担心哪天项目查下来,没证就是黑工,工资都拿不稳。很多人都在纠结,这【庆阳市安监局电工证】到底 值不值得考…

查看 →
焊工应急局特种工多久拿证?避坑指南

焊工应急局特种工多久拿证?避坑指南

焊工应急局特种工多久拿证?避坑指南 想考焊工应急局特种工,最怕就是不知道去哪报名,怕被中介坑得血本无归。很多兄弟在微信上问:到底多久拿证?能不能加急?这里必须把丑话说在前头: 正规渠道,从报名到拿证,标准流程通常需要 25-35 天,任何承诺“3天拿证”、“内部通道”的,全是骗子。…

查看 →
建机电工证怎么考?3步搞定郑州报考避坑指南

建机电工证怎么考?3步搞定郑州报考避坑指南

建机电工证怎么考?3步搞定郑州报考避坑指南 手里那张特种作业操作证是不是快到期了?看着有效期临近,心里慌得一批,却完全搞不清复审流程,怕错过了时间窗口直接作废。这种“证在手、心发慌”的日子,咱们干工程的都经历过。别急,今天这份 郑州报考避坑指南 ,专门拆解 建机电工证怎么考…

查看 →
相关服务

看完文章,下一步可以直接办

报考、备考、复审相关的服务入口,都在这里。

考试批次时间

近期各工种批次安排与报名截止提醒。

查看详情 →

报考条件查询

年龄、学历、体检条件逐项对照。

查看详情 →

材料免费预审

报名材料逐项核对,缺什么当场补齐。

查看详情 →

复审流程

复审时间、材料与流程一次说清。

查看详情 →
报名流程

从咨询到拿证,就四步

每一步都有明确产出,每一步都有人盯着。

01

意向沟通

说清岗位与目标,顾问推荐对应工种与报考方向。

02

材料预审

身份证、学历、体检逐项核对,缺什么当场补齐。

03

批次报名

锁定最近考试批次,考务信息逐一确认。

04

培训考试

题库辅导加实操要点,考完节点逐一跟进拿证。

免费咨询

想报考特种作业证?找顾问聊一聊

根据你的工作经历推荐工种,确认批次与材料,30 秒登记当天回访。