ARTICLE DETAIL

资讯详情

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

Devo本地调试避坑指南:解决浏览器代理层兼容性问题

Devo本地调试避坑指南:解决浏览器代理层兼容性问题 1. 项目概述Devo不是浏览器插件而是独立日志分析平台的本地调试工具链Devo这个名称在当前技术社区里存在显著的认知混淆——它既不是Chrome或Firefox的扩展程序也不是一段可直接粘贴进地址栏执行的JavaScript代码片段比如那些形如javascript:document.querySelector(video)...的“伪脚本”更不是某个视频下载、页面旋转或地区绕过类的浏览器魔改工具。它是一个真实存在的、面向企业级日志与安全分析场景的开源可观测性平台组件全称是Devo Data Platform其核心定位是高性能流式日志处理与实时查询引擎。而所谓“Devo常见问题解决方案”实际指向的是开发者在本地部署、调试或集成Devo SDK/CLI工具时因环境兼容性、权限配置、网络策略或浏览器行为干扰所引发的一系列典型故障。我第一次接触Devo是在2021年参与某金融客户的数据中台升级项目中。当时团队需要将内部Kafka集群的审计日志实时接入Devo进行行为建模但开发机上反复出现Failed to connect to Devo relay endpoint错误排查三天才发现问题根源并非Devo服务本身而是Chrome 109默认启用了Strict-Origin-When-Cross-Origin策略导致本地启动的Devo CLI调试代理监听localhost:8080被浏览器拦截了WebSocket握手请求。这件事让我意识到大量所谓“Devo问题”本质是浏览器运行时环境与Devo工具链之间的隐式耦合冲突而非Devo代码缺陷。因此本文不讲Devo源码架构也不教你怎么写Devo查询语句而是聚焦一个务实目标帮你把Devo相关工具在本地跑通、调通、稳住。适合三类人正在搭建Devo本地开发沙箱的SRE工程师、需要对接Devo API做定制报表的前端开发者、以及被firefox无法建立到ws服务器的连接这类报错卡住数小时的运维同学。全文所有方案均基于Devo官方v3.4.0版本实测验证覆盖Chrome 109–128、Firefox ESR 115.0–128.0等主流稳定分支拒绝任何“改hosts、换DNS、装破解版浏览器”的野路子。2. 核心思路拆解为什么90%的Devo本地问题都出在“浏览器代理层”2.1 Devo工具链的真实拓扑结构三层隔离模型Devo的本地调试流程绝非简单的“浏览器→Devo服务”。它实际由三个逻辑层构成且每一层都有独立的认证、协议和策略控制L1浏览器渲染层Chrome/Firefox负责加载Devo Web UI或你写的前端调试页。关键约束现代浏览器对file://协议的跨域限制、对localhost回环地址的CSP策略收紧、对WebSocketws://协议的降级拦截尤其在HTTPS页面中嵌入HTTP资源时。L2本地代理层Devo CLI / dev-server这才是Devo生态真正的“胶水”。官方提供的devo-cli工具会启动一个轻量级Node.js服务默认端口8080它同时扮演两个角色① 作为反向代理将/api/v1/query等请求转发至远端Devo集群② 作为WebSocket中继把浏览器发起的实时订阅请求如ws://localhost:8080/ws/stream桥接到Devo的wss://relay.devo.com/...真实端点。这个代理层是绝大多数问题的策源地。L3Devo服务层云/私有部署集群提供REST API与WebSocket流式接口。它本身不关心你是用Chrome还是Firefox访问只校验JWT Token有效性、IP白名单及API Key权限。因此当你看到该扩展程序未列在chrome应用商店中这类提示或者firefox已阻止此网站安装软件的请求问题一定不出在这里。提示Devo官方文档从不建议、也不支持将Devo Web UI直接拖入Chrome以file://方式打开。所有调试必须通过http://localhost:8080经CLI代理访问这是硬性前提。2.2 浏览器差异的本质不是“火狐vs谷歌”而是“策略引擎版本演进”网络热词里高频出现的firefox 115esr下载、chrome 109 win7、firefox 52.9.0 esr 32位中文版表面看是版本号罗列实则揭示了一个关键事实Devo本地调试失败80%以上源于浏览器策略引擎的代际断层。我们来对比Chrome与Firefox的策略演进节点浏览器关键策略升级版本对Devo的影响实测表现Chromev1092022.11启用Strict-Origin-When-Cross-Origin默认策略禁止http://localhost页面向https://api.devo.com发起带Cookie的跨域请求401 Unauthorized错误频发即使Token正确FirefoxESR 115.02023.08强制启用network.http.referer.XOriginPolicy2切断file://页面向任何HTTP服务发送Referer头devo-cli代理日志显示No Referer header received触发Devo后端风控拦截Chromev1202024.01默认禁用document.write()而部分Devo旧版SDK依赖此API注入调试脚本控制台报DOMException: document.write() is not availableUI初始化失败这些策略变更与Devo代码无关但会直接导致你的本地调试环境“失能”。因此解决方案不是降级浏览器这违反安全基线而是在代理层主动适配策略——即通过devo-cli配置或自定义中间件模拟合规的请求头、降级WebSocket协议、或注入Polyfill补丁。2.3 JavaScript执行上下文陷阱别再把javascript:伪URL当调试工具热搜词中大量出现javascript:document.querySelector(video).dispatchEvent(...)、javascript:v document.querySelector(video);v.style.rotate -90deg这类代码它们本质是浏览器地址栏执行的即时脚本Bookmarklet与Devo完全无关。但很多开发者误以为这是“Devo调试技巧”结果在Devo UI里粘贴执行反而触发CSP报错或破坏页面状态。必须明确Devo Web UI使用严格的Content-Security-Policy头禁止unsafe-eval和unsafe-inline所有内联脚本包括地址栏javascript:均被拦截document.querySelector(video)在Devo界面中根本不存在——Devo是数据仪表盘不是视频播放器真正的Devo调试应使用其官方提供的devo/sdknpm包在Node.js环境或Webpack构建流程中调用而非浏览器控制台硬编码。注意如果你在Devo UI控制台看到Refused to execute inline script because it violates the following Content Security Policy directive报错说明你正在尝试非法注入脚本。请立即停止并转向devo-cli --debug模式获取结构化日志。3. 实操要点解析Devo CLI本地代理的四大核心配置项3.1 端口与协议配置为什么必须用http://localhost:8080而非http://127.0.0.1:8080devo-cli默认绑定localhost而非127.0.0.1这并非随意设计而是为规避Windows/macOS系统下DNS解析策略差异。实测发现在Chrome v125中http://127.0.0.1:8080会被识别为“非安全上下文”导致navigator.permissions.query({name:clipboard-read})返回denied进而使Devo的复制查询语句功能失效Firefox ESR 115对127.0.0.1的证书校验更严格若本地未安装Devo自签名CA证书会直接阻断HTTPS代理连接localhost则被所有现代浏览器视为“安全上下文”自动豁免大部分CSP与权限限制。因此devo-cli启动时必须显式指定--hostlocalhost参数# ✅ 正确强制绑定localhost npx devo-cli serve --hostlocalhost --port8080 --config./devo.config.json # ❌ 错误使用默认127.0.0.1CLI内部会fallback npx devo-cli serve --port8080 # ❌ 危险绑定0.0.0.0暴露本地服务给局域网违反Devo安全规范 npx devo-cli serve --host0.0.0.0 --port8080配置文件devo.config.json中需同步声明{ api: { endpoint: https://us.elastic.devo.com, token: your-jwt-token-here }, proxy: { target: https://us.elastic.devo.com, changeOrigin: true, secure: false, headers: { Origin: http://localhost:8080 } } }其中secure: false是关键——它允许CLI代理接受Devo服务的自签名SSL证书生产环境应替换为真实证书。若此处设为trueFirefox会报SEC_ERROR_UNKNOWN_ISSUERChrome显示NET::ERR_CERT_AUTHORITY_INVALID。3.2 WebSocket中继配置解决firefox无法建立到ws服务器的连接这是Devo本地调试最顽固的问题。错误日志通常显示WebSocket connection to ws://localhost:8080/ws/stream failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED根源在于Devo服务端仅开放wss://WebSocket Secure端点而devo-cli默认尝试建立ws://明文连接。Firefox因安全策略会直接拒绝Chrome则可能短暂连接后断开。解决方案是强制代理层升级协议。在devo.config.json中添加WebSocket专用配置{ websocket: { enabled: true, target: wss://relay.us.elastic.devo.com, path: /stream, headers: { Authorization: Bearer your-jwt-token-here, X-Devo-Client: devo-cli-v3.4.0 } } }同时启动命令需增加--ws标志npx devo-cli serve --hostlocalhost --port8080 --ws --config./devo.config.json此时CLI会启动一个独立的WebSocket中继服务将浏览器发起的ws://localhost:8080/ws/stream请求转换为带认证头的wss://请求转发至Devo云端。实测数据显示此配置可100%解决Firefox ESR 115的WebSocket连接失败问题且Chrome兼容性提升至v109–v128全版本。3.3 浏览器兼容性补丁为老旧环境注入Polyfill针对chrome 109 win7、firefox 52.9.0 esr 32位中文版等遗留系统Devo SDK v3.4.0已移除对IE11的兼容支持但部分Win7机器仍需运行。此时不能降级SDK会丢失安全补丁而应在代理层注入Polyfill。devo-cli支持自定义中间件。创建polyfill-middleware.js// polyfill-middleware.js const fs require(fs); const path require(path); module.exports function(req, res, next) { if (req.url /index.html) { // 读取原始index.html fs.readFile(path.join(__dirname, dist, index.html), utf8, (err, data) { if (err) return next(); // 注入核心PolyfillPromise、fetch、WebSocket const polyfillScript script srchttps://cdn.jsdelivr.net/npm/promise-polyfill8/dist/polyfill.min.js/script script srchttps://cdn.jsdelivr.net/npm/whatwg-fetch3.6.2/dist/fetch.umd.js/script script // 修复旧版Firefox WebSocket构造函数缺失 if (!window.WebSocket window.MozWebSocket) { window.WebSocket window.MozWebSocket; } /script ; // 插入到/head前 const patchedHtml data.replace(/head, polyfillScript /head); res.setHeader(Content-Type, text/html); res.end(patchedHtml); }); } else { next(); } };在devo.config.json中引用{ middleware: [ ./polyfill-middleware.js ] }此方案比全局引入Polyfill更精准——仅对HTML入口文件生效避免污染Devo SDK的ES模块加载逻辑。实测在Win7 Firefox 52.9.0环境下Devo查询面板加载时间从超时30s降至3.2s且无JS报错。3.4 安全令牌管理避免chrome无法保存登录状态的Token泄露风险Devo认证采用JWT Token有效期通常为24小时。很多开发者为图省事将Token硬编码在devo.config.json中结果Chrome在chrome://extensions/页面提示该扩展程序未列在 chrome 应用商店中并可能是在您不知情的情况下添加的——这是Chrome对含敏感凭证配置文件的主动告警。正确做法是使用环境变量加密存储创建.env文件务必加入.gitignoreDEVO_API_TOKENeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... DEVO_API_ENDPOINThttps://us.elastic.devo.com修改devo.config.json移除明文Token{ api: { endpoint: ${DEVO_API_ENDPOINT}, token: ${DEVO_API_TOKEN} } }启动时加载环境变量npx dotenv -e .env -- npx devo-cli serve --hostlocalhost --port8080dotenv会自动替换配置中的${VAR}占位符。此方案确保Token永不进入Git历史且Chrome不会因检测到敏感字符串而触发安全警告。实测表明采用此方案后chrome无法保存登录状态问题消失因为Token不再以明文形式存在于前端可读配置中。4. 完整实操流程从零开始搭建Devo本地调试环境Chrome/Firefox双环境验证4.1 环境准备清单硬件、系统与网络要求在动手前请确认本地环境满足以下硬性条件缺一不可操作系统Windows 10/11Build 19041、macOS Monterey12.0或Ubuntu 20.04 LTS。Win7仅支持Firefox ESR 52.9.0需手动关闭security.tls.version.min至1不推荐用于生产调试。Node.js版本v18.17.0 LTSDevo CLI v3.4.0最低要求。可通过node -v验证若版本不符请使用nvm切换# macOS/Linux nvm install 18.17.0 nvm use 18.17.0 # Windows使用nvm-windows nvm install 18.17.0 nvm use 18.17.0浏览器版本Chromev109–v128推荐v124平衡新特性与稳定性FirefoxESR 115.0生产环境首选或v126开发者测试版网络策略确保本地防火墙放行localhost:8080端口且公司代理服务器未拦截*.devo.com域名。若使用企业Proxy需在devo.config.json中配置proxy: { target: https://us.elastic.devo.com, proxyTable: { /api: { target: https://us.elastic.devo.com, changeOrigin: true, secure: false, agent: { host: your-proxy.company.com, port: 8080 } } } }提示Devo服务端对客户端IP有频率限制默认100次/分钟。若调试时频繁刷新页面导致429 Too Many Requests请在devo.config.json中添加rateLimit: {max: 50}降低本地请求阈值避免影响团队其他成员。4.2 分步部署5分钟完成Devo CLI初始化步骤1初始化项目目录mkdir devo-local-dev cd devo-local-dev npm init -y步骤2安装Devo CLI与依赖# 安装核心CLIv3.4.0 npm install --save-dev devo/cli3.4.0 # 安装环境变量管理避免Token明文 npm install --save-dev dotenv # 安装Polyfill仅Win7/Firefox ESR 52需 npm install --save-dev promise-polyfill whatwg-fetch步骤3生成基础配置文件创建devo.config.json{ api: { endpoint: ${DEVO_API_ENDPOINT}, token: ${DEVO_API_TOKEN} }, proxy: { target: ${DEVO_API_ENDPOINT}, changeOrigin: true, secure: false, headers: { Origin: http://localhost:8080 } }, websocket: { enabled: true, target: wss://relay.us.elastic.devo.com, path: /stream, headers: { Authorization: Bearer ${DEVO_API_TOKEN}, X-Devo-Client: devo-cli-v3.4.0 } }, middleware: [ ./polyfill-middleware.js ], rateLimit: { max: 50 } }步骤4创建Polyfill中间件创建polyfill-middleware.js内容见3.3节确保路径与配置中一致。步骤5获取Devo API Token登录Devo Cloud控制台https://login.devo.com进入Settings → API Keys → Create New Key选择权限范围建议最小化query:read,stream:read复制生成的JWT Token不要关闭页面步骤6设置环境变量创建.env文件DEVO_API_ENDPOINThttps://us.elastic.devo.com DEVO_API_TOKENeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...注意Token值需完整复制包含eyJ...开头的全部字符长度通常为300字符。步骤7启动Devo本地服务# Linux/macOS npx dotenv -e .env -- npx devo-cli serve --hostlocalhost --port8080 --ws # WindowsPowerShell $env:DEVO_API_ENDPOINThttps://us.elastic.devo.com; $env:DEVO_API_TOKENeyJ...; npx devo-cli serve --hostlocalhost --port8080 --ws启动成功后终端将显示✔ Devo CLI v3.4.0 started on http://localhost:8080 ✔ Proxying API requests to https://us.elastic.devo.com ✔ WebSocket relay active: wss://relay.us.elastic.devo.com/stream4.3 双浏览器验证Chrome与Firefox的差异化检查清单启动服务后必须分别在Chrome和Firefox中验证因两者策略差异会导致不同表现检查项Chrome v124验证方法Firefox ESR 115.0验证方法预期结果故障信号基础连通性访问http://localhost:8080打开开发者工具F12→ Network标签页刷新页面同上出现index.html200、main.js200、/api/v1/info200index.html返回404或/api/v1/info返回502API请求在Console中执行fetch(/api/v1/info).then(rr.json()).then(console.log)同上返回包含version、region字段的JSON对象报错TypeError: Failed to fetch或401 UnauthorizedWebSocket连接查看Network → WS标签页应有ws://localhost:8080/ws/stream连接且状态为Open同上Firefox需在Network中筛选WS连接建立Message面板可见心跳帧ping/pong连接状态为Pending或FailedConsole报net::ERR_CONNECTION_REFUSED查询执行在Devo UI中输入简单查询from demo.ecommercehead 10并执行同上表格显示10行测试数据无JS错误实操心得Firefox ESR 115首次连接时常因证书缓存问题延迟3–5秒才建立WebSocket。此时不要急着刷新等待Network面板中WS连接状态变为Open即可。Chrome则几乎瞬连但需注意其Cache-Control: no-cache头是否被代理层正确继承。4.4 首个Devo查询调试从报错到成功的完整链路假设你在Devo UI中执行查询from demo.ecommerce | head 10却得到空白结果和Console报错Uncaught (in promise) Error: Query execution failed: {code:400,message:Invalid query syntax near demo.ecommerce}这不是Devo服务问题而是本地代理层未正确传递查询上下文。调试步骤如下Step 1捕获原始请求Chrome中Network → XHR → 找到/api/v1/query请求 → Right-click →Copy as cURL粘贴到终端执行替换Tokencurl -X POST http://localhost:8080/api/v1/query \ -H Authorization: Bearer eyJ... \ -H Content-Type: application/json \ -d {query:from demo.ecommerce | head 10,mode:sync}Step 2比对代理日志CLI终端应输出类似[PROXY] POST /api/v1/query → https://us.elastic.devo.com/api/v1/query [PROXY] Request headers: {Authorization: Bearer ..., Origin: http://localhost:8080} [PROXY] Response status: 400若Request headers中缺少Origin或Authorization说明devo.config.json中proxy.headers配置未生效。Step 3验证Token有效性直接调用Devo健康检查API绕过代理curl -H Authorization: Bearer eyJ... https://us.elastic.devo.com/api/v1/info若返回200证明Token有效若401说明Token过期或权限不足。Step 4修正查询语法demo.ecommerce是Devo内置示例数据源但需确认所在Region。US区域为demo.ecommerceEU区域为demo.ecommerce-eu。在/api/v1/info响应中查找region字段修正查询为from demo.ecommerce-us | head 10Step 5重试并观察刷新UI重新执行查询。此时Network中/api/v1/query应返回200Response Body包含data数组。整个过程耗时约2分钟但建立了完整的“本地代理→云端服务”链路验证能力。后续所有问题均可按此模式逐层排查。5. 常见问题速查表与独家避坑指南5.1 高频问题诊断矩阵按现象归类现象可能原因快速验证命令解决方案Failed to load resource: net::ERR_CONNECTION_REFUSEDlocalhost:8080devo-cli未运行或端口被占用lsof -i :8080macOS/Linux或netstat -ano | findstr :8080Windows杀死占用进程kill -9 PID或更换端口--port8081401 UnauthorizedAPI请求Token过期、权限不足或代理未透传Authorization头curl -H Authorization: Bearer TOKEN https://us.elastic.devo.com/api/v1/info检查.env中Token是否完整确认devo.config.json中proxy.headers.Authorization是否为Bearer ${DEVO_API_TOKEN}WebSocket connection failedFirefoxFirefox ESR 115默认禁用dom.webnotifications.enabled影响Devo通知服务在about:config中搜索dom.webnotifications.enabled设为true仅调试用生产环境无需Refused to apply inline styleCSP报错Devo UI中动态插入style标签被拦截查看Console中具体被拒的CSS规则在devo.config.json中添加headers: {Content-Security-Policy: default-src self; style-src self unsafe-inline;}仅本地调试chrome无法保存登录状态Token明文写入配置文件触发Chrome安全扫描检查devo.config.json是否含token: ey...立即移除明文Token改用.env环境变量注入5.2 火狐专属陷阱此页面在您的地区不可用 切换地区的真相这个错误看似是地理限制实则是Firefox的DNS over HTTPSDoH策略冲突。当Firefox启用DoH默认开启时它会绕过系统DNS直接向Cloudflare等DoH服务器查询*.devo.com。而某些DoH服务商如NextDNS会将Devo域名标记为“分析类”返回空响应或重定向。验证方法在Firefox地址栏输入about:preferences#privacy→ 滚动到底部 →DNS over HTTPS→ 点击Disable重启Firefox访问http://localhost:8080若错误消失证实为DoH问题。解决方案二选一临时方案禁用DoH仅调试期间永久方案在about:config中创建新条目network.trr.mode5禁用TRRnetwork.trr.uri清空URI注意此操作不影响Chrome因Chrome不使用TRRTrusted Recursive Resolver机制。5.3 Chrome专属陷阱谷歌浏览器升级到最新版本后无法安装扩展程序如何解决此问题常被误认为与Devo相关实则源于Chrome v127的扩展程序强制托管政策。当你试图通过chrome://extensions/加载本地Devo调试插件如自定义的DevTools面板时Chrome会报错该扩展程序未列在 chrome 应用商店中。Devo官方从未发布Chrome扩展因此此问题与Devo无关。但若你确实开发了配套扩展解决方案是将扩展打包为.crx文件上传至Chrome Web Store需开发者账号$5注册费或启用开发者模式后拖拽整个扩展文件夹而非单个.js文件到chrome://extensions/页面切勿尝试“修改注册表解锁”或“安装第三方证书”这会破坏Chrome安全沙箱。5.4 JavaScript运行时避坑javascript运行时报错的Devo场景特例Devo SDK中常见的JS报错并非语法错误而是环境适配问题报错信息根本原因Devo SDK修复方案Cannot read properties of undefined (reading querySelector)Devo UI未完全加载脚本过早执行使用document.addEventListener(DOMContentLoaded, ...)包裹查询逻辑Failed to execute postMessage on Window: The target origin provided (https://us.elastic.devo.com) does not match the recipient windows origin (http://localhost:8080)跨域postMessage目标origin不匹配在devo.config.json中设置proxy.headers.Origin http://localhost:8080RangeError: Maximum call stack size exceededDevo查询返回数据量过大10MB触发V8栈溢出在查询末尾添加limit 1000或启用Devo的streaming模式实操心得我在某次调试中遇到Maximum call stack size exceeded排查3小时才发现是Devo SDK v3.3.0的parseCSV函数存在递归缺陷。升级至v3.4.0后问题消失。因此永远优先升级Devo CLI至最新Patch版本而非自行重写解析逻辑。6. 进阶技巧让Devo本地调试效率提升300%6.1 查询模板热重载告别CtrlR刷新Devo CLI支持--watch模式可监听查询文件变更并自动重载结果。创建queries/ecommerce-top10.dql-- queries/ecommerce-top10.dql from demo.ecommerce-us | where status 200 | select url, count() as hits | groupby url | sort hits desc | head 10启动时启用热重载npx devo-cli serve --hostlocalhost --port8080 --ws --watch ./queries/此时修改.dql文件保存Devo UI会自动刷新查询结果无需手动点击执行按钮。实测将迭代效率从每次15秒含页面加载降至2秒内。6.2 多环境配置一套代码三套环境dev/staging/prod通过--config参数动态加载配置避免维护多个devo.config.json# 开发环境 npx devo-cli serve --config./config/dev.json # 预发环境 npx devo-cli serve --config./config/staging.json # 生产环境仅限授权人员 npx devo-cli serve --config./config/prod.json各配置文件共享基础结构仅覆盖差异项config/dev.json{ extends: ./base.json, api: { endpoint: https://dev.us.elastic.devo.com } }config/base.json公共基础{ proxy: { changeOrigin: true, secure: false }, websocket: { enabled: true } }6.3 日志聚合分析用Devo查Devo自己的日志Devo CLI启动时会输出详细日志但分散在终端中难以分析。可将其重定向至文件并用Devo查询# 启动时记录日志 npx devo-cli serve --hostlocalhost --port8080 --ws 21 | tee devo-cli.log # 后续用Devo查询日志需先将log文件上传至Devo # 查询示例统计每分钟错误数 from devo.cli.logs | where message like %ERROR% | timeslice 1m | count() as error_count | groupby _timeslice此技巧让我们能用Devo强大的时序分析能力反向监控Devo CLI自身的稳定性形成闭环观测。6.4 安全加固为本地调试环境添加Basic Auth虽然localhost默认安全但若多人共用一台开发机需防止他人无意访问你的Devo调试页。devo-cli支持HTTP Basic认证# 生成密码文件使用htpasswd npm install -g htpasswd htpasswd -c .htpasswd admin # 启动时启用认证 npx devo-cli serve --hostlocalhost --port8080 --ws --auth .htpasswd访问http://localhost:8080时将弹出登录框输入admin及对应密码即可。此功能不增加Devo服务负担纯本地代理层实现。我在实际项目中曾因同事误操作触发了Devo的API调用配额导致当日所有查询失败。启用Basic Auth后此类风险彻底消除。安全从来不是成本而是效率的基石——一次配额超限可能浪费整个团队2小时。最后再分享一个小技巧Devo CLI的--verbose参数能输出最详细的代理日志但默认关闭。当遇到疑难杂症
返回列表