<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>前置代理 | 折腾啥</title><description>Power Users/Automators 折腾/讨论/分享各种开源工具/脚本/自动化工作流👥 @zhetengsha_group📌 合集 https://t.me/zhetengsha/2🎁 恰饭 https://t.me/zhetengsha/957📢 广告投放 @xream @xream_botBuy ads: https://telega.io/c/zhetengshafeedId:55438372655431680+userId:62307599601855488</description><link>http://telegram.zhetengsha.eu.org</link><item><title>#优质博文 #JavaScript #新特性 #前端 #错误处理Error chaining in JavaScript: cleaner debugging with Error.cause</title><link>http://telegram.zhetengsha.eu.org/posts/4114</link><guid isPermaLink="true">http://telegram.zhetengsha.eu.org/posts/4114</guid><pubDate>Sat, 15 Nov 2025 04:03:40 GMT</pubDate><content:encoded>&lt;div class=&quot;tgme_widget_message_forwarded_from accent_color&quot;&gt;Forwarded from &lt;a class=&quot;tgme_widget_message_forwarded_from_name&quot; href=&quot;https://t.me/cosine_front_end/3053&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;cosine - 前端人の日常频道&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;/search/result?q=%23%E4%BC%98%E8%B4%A8%E5%8D%9A%E6%96%87&quot; title=&quot;#优质博文&quot;&gt;#优质博文&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23JavaScript&quot; title=&quot;#JavaScript&quot;&gt;#JavaScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%B0%E7%89%B9%E6%80%A7&quot; title=&quot;#新特性&quot;&gt;#新特性&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86&quot; title=&quot;#错误处理&quot;&gt;#错误处理&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://allthingssmitty.com/2025/11/10/error-chaining-in-javascript-cleaner-debugging-with-error-cause/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Error chaining in JavaScript: cleaner debugging with Error.cause&quot;&gt;Error chaining in JavaScript: cleaner debugging with Error.cause&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;tg-expandable&quot;&gt;
      &lt;input type=&quot;checkbox&quot; id=&quot;expand-1-0&quot; class=&quot;tg-expandable__checkbox&quot; aria-label=&quot;Toggle hidden content&quot; aria-controls=&quot;expand-1-0-content&quot; /&gt;
      &lt;div id=&quot;expand-1-0-content&quot; class=&quot;tg-expandable__content&quot;&gt;AI 摘要：本文介绍了在 JavaScript (ES2022) 中引入的 Error.cause 属性，展示它如何让错误处理更具可追溯性。作者 Matt Smith 通过实例说明了传统错误包裹的缺陷，以及 Error.cause 在保持原始堆栈信息、改进调试体验和测试断言方面的优势。最终总结出一套现代错误链最佳实践，帮助开发者构建更清晰、更稳健的错误追踪体系。&lt;/div&gt;
      &lt;label for=&quot;expand-1-0&quot; class=&quot;tg-expandable__toggle&quot;&gt;&lt;span class=&quot;sr-only&quot;&gt;Toggle hidden content&lt;/span&gt;&lt;/label&gt;
    &lt;/div&gt;&lt;br /&gt;[以下是方便搜索索引的大纲(AI 生成)，请读原文]&lt;br /&gt;&lt;div class=&quot;tg-expandable&quot;&gt;
      &lt;input type=&quot;checkbox&quot; id=&quot;expand-1-1&quot; class=&quot;tg-expandable__checkbox&quot; aria-label=&quot;Toggle hidden content&quot; aria-controls=&quot;expand-1-1-content&quot; /&gt;
      &lt;div id=&quot;expand-1-1-content&quot; class=&quot;tg-expandable__content&quot;&gt;1.  传统错误处理的问题&lt;br /&gt;•   层层调用的代码容易丢失原始错误信息；&lt;br /&gt;•   以字符串拼接错误信息会破坏堆栈和错误类型；&lt;br /&gt;•   导致调试困难，追踪难度高。&lt;br /&gt;&lt;br /&gt;2.  引入 Error.cause 的改进&lt;br /&gt;•   通过 new Error(message, { cause }) 保留原始错误；&lt;br /&gt;•   可同时访问顶层与底层堆栈信息；&lt;br /&gt;•   cause 属性为非枚举属性，不污染日志或循环输出；&lt;br /&gt;•   与 message、stack 一样保持一致的行为。&lt;br /&gt;&lt;br /&gt;3.  实践与代码演示&lt;br /&gt;•   示例：从 JSON.parse 到自定义函数的错误传递；&lt;br /&gt;•   在日志中手动输出 err.cause 获取完整上下文；&lt;br /&gt;•   适合层次式系统（如服务嵌套调用）排查问题。&lt;br /&gt;&lt;br /&gt;4.  历史背景与 cause 出现前的替代方案&lt;br /&gt;•   旧方案包括自定义字段 .originalError、字符串拼接等；&lt;br /&gt;•   这些方式不统一且容易破坏原始错误结构；&lt;br /&gt;•   标准化的 cause 提供更安全一致的机制。&lt;br /&gt;&lt;br /&gt;5.  自定义错误类的支持&lt;br /&gt;•   在自定义类中通过 super(message, { cause }) 传递原因；&lt;br /&gt;•   适用 ES2022+ 环境即可直接使用；&lt;br /&gt;•   对 TypeScript 用户，需在 tsconfig.json 中启用 &quot;target&quot;: &quot;es2022&quot; 与 &quot;lib&quot;: [&quot;es2022&quot;]。&lt;br /&gt;&lt;br /&gt;6.  在测试中的应用&lt;br /&gt;•   测试断言可直接验证 err.cause 类型；&lt;br /&gt;•   提升测试可读性与准确性。&lt;br /&gt;&lt;br /&gt;7.  实用技巧与注意事项&lt;br /&gt;•   浏览器默认不输出层级错误链，须手动打印；&lt;br /&gt;•   不建议过度使用错误链，避免干扰阅读；&lt;br /&gt;•   可递归打印完整错误链（logErrorChain 与 logFullErrorChain 示例）；&lt;br /&gt;•   实践场景：数据库异常→业务异常→服务异常的多层错误追踪。&lt;br /&gt;&lt;br /&gt;8.  环境支持与现代用法总结&lt;br /&gt;•   支持于现代浏览器与运行环境（Chrome 93+、Node.js 16.9+、Deno、Bun 等）；&lt;br /&gt;•   推荐实践：&lt;br /&gt;    •   &lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;✅&lt;/b&gt;&lt;/i&gt; 使用 Error(message, { cause })&lt;br /&gt;    •   &lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;✅&lt;/b&gt;&lt;/i&gt; 支持内建与自定义错误类型&lt;br /&gt;    •   &lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;✅&lt;/b&gt;&lt;/i&gt; 改善日志和调试体验&lt;br /&gt;    •   &lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;✅&lt;/b&gt;&lt;/i&gt; 对 TypeScript 进行正确配置&lt;br /&gt;    •   &lt;i class=&quot;emoji&quot;&gt;&lt;b&gt;⚠️&lt;/b&gt;&lt;/i&gt; 记得手动输出或递归追踪错误链。&lt;/div&gt;
      &lt;label for=&quot;expand-1-1&quot; class=&quot;tg-expandable__toggle&quot;&gt;&lt;span class=&quot;sr-only&quot;&gt;Toggle hidden content&lt;/span&gt;&lt;/label&gt;
    &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;author Matt Smith&lt;/i&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://allthingssmitty.com/2025/11/10/error-chaining-in-javascript-cleaner-debugging-with-error-cause/?utm_source=substack&amp;amp;utm_medium=email&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Use JavaScript&apos;s &apos;cause&apos; property to chain errors, preserve context, and simplify debugging. Cleaner stack traces, better test assertions.&quot;&gt;
  &lt;i class=&quot;link_preview_right_image&quot; style=&quot;background-image:url(&apos;https://cdn4.telesco.pe/file/rsSVYPhVcHXLjUTDyRZzFl-cmwVFLU9cmzqvnl3VUUDVsFfn8T8jIlZL0wV7hqeZFz7RmWyd1I_cPUsRCr78zTyzyvPVgD3suy5rpctNwMCa6ToD4QB8pe1adTh5EAfOzbsO8ThJHOpGGegeRPPb7RpuvVJD6mVggn3eqzIRW4idf8yjCIuRsMiYRd9xH0-yPFEn1dARMTAmtvW-vHSAMuPzhzWV-dkp2LYjB9Yks4-F_78xGdxx_B6EalkoXUrtkC9W2llTcRlQqEn3MKdO_enTzjeQ2NpRQiFZZ8cUs1kZv5GjuKU-EfRPbfcozw3t_ndBS_IawZdAwu8YqqoOKA.jpg&apos;)&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Allthingssmitty&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;Error chaining in JavaScript: cleaner debugging with Error.cause - Matt Smith&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Use JavaScript&apos;s &apos;cause&apos; property to chain errors, preserve context, and simplify debugging. Cleaner stack traces, better test assertions.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title> Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)</title><link>http://telegram.zhetengsha.eu.org/posts/1241</link><guid isPermaLink="true">http://telegram.zhetengsha.eu.org/posts/1241</guid><pubDate>Sun, 17 Mar 2024 19:59:59 GMT</pubDate><content:encoded>&lt;div class=&quot;image-list-container image-list-odd&quot;&gt;
      &lt;button type=&quot;button&quot; class=&quot;image-preview-button image-preview-wrap&quot; popovertarget=&quot;modal-1241-0&quot; popovertargetaction=&quot;show&quot; aria-label=&quot;Open image preview:  Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot;&gt;
        &lt;img src=&quot;/static/https://cdn5.telesco.pe/file/HncihUg02Zk7sS3fcHETo-ZwtMh1WiMGeU-M3S1U0F3I7wQS2LcIRc7jr-nbeSV9OYCpYRVQPJpesaB-7gJcFaF-QImNrFn10tTLdukeCm3VVrqD8X4AIdAc4wCnVYSS9zGLOcOb-NujXq8ulwOxCYnZHu1trYGwrTAeetp4c0dfTEg5C0AwsRaAYFyaq_l9qnVYMfel1vEPNkPvCmIz5amtZ4j6fQ3gq2_B34H-zhrq4Iy2MAXX43HpsrzIKzWJwhpIfVmeF6iXo5UxCGpHqQJ9Z3ITsiam5pVrCVbU-rEW7uFQc4kzDofj1IhdUcmf00s9WfM4q_UIGlMM3ZBMaQ.jpg&quot; alt=&quot; Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot; width=&quot;453&quot; height=&quot;397&quot; loading=&quot;eager&quot; /&gt;
      &lt;/button&gt;
      &lt;div class=&quot;modal&quot; id=&quot;modal-1241-0&quot; popover=&quot;auto&quot; aria-label=&quot;Image preview&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__backdrop&quot; popovertarget=&quot;modal-1241-0&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;&lt;/button&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__close&quot; popovertarget=&quot;modal-1241-0&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;×&lt;/button&gt;
        &lt;div class=&quot;modal__surface&quot;&gt;
          
        &lt;/div&gt;
      &lt;/div&gt;
    
      &lt;button type=&quot;button&quot; class=&quot;image-preview-button image-preview-wrap&quot; popovertarget=&quot;modal-1241-1&quot; popovertargetaction=&quot;show&quot; aria-label=&quot;Open image preview:  Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot;&gt;
        &lt;img src=&quot;/static/https://cdn5.telesco.pe/file/aiNHpdxHITpxgj26rFJ4yaDpIFvcmATbxx8p25EMz_b1d5s6_o6a3uayswJqzf2wA_uaY_NGa25pbzMR1E54aetaXB4zYkeLFvIhd8H3dfSDuKz-vRl5Hnsu2CJn00QR2imsSYkogIwG0BkNzvQ9O3fsZMTVtE7uLm9LmZEmbt_eLxFFqlzS3RtbUJn7dluyGipTw4TGXdgFjTQn0Xdi6BUFvBrKkDLsn7qHeo6T7KerKCUlmSsfjNw6mytRoQUZAMqhfBxjtiZB11GMWB0X4Sfps3CTOVjlGbK3KHUMvZBIQdupKF9Jfln9-sW0cQQL5POWH39LwZhNWPYikUHQGQ.jpg&quot; alt=&quot; Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot; width=&quot;225&quot; height=&quot;177&quot; loading=&quot;eager&quot; /&gt;
      &lt;/button&gt;
      &lt;div class=&quot;modal&quot; id=&quot;modal-1241-1&quot; popover=&quot;auto&quot; aria-label=&quot;Image preview&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__backdrop&quot; popovertarget=&quot;modal-1241-1&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;&lt;/button&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__close&quot; popovertarget=&quot;modal-1241-1&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;×&lt;/button&gt;
        &lt;div class=&quot;modal__surface&quot;&gt;
          
        &lt;/div&gt;
      &lt;/div&gt;
    
      &lt;button type=&quot;button&quot; class=&quot;image-preview-button image-preview-wrap&quot; popovertarget=&quot;modal-1241-2&quot; popovertargetaction=&quot;show&quot; aria-label=&quot;Open image preview:  Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot;&gt;
        &lt;img src=&quot;/static/https://cdn5.telesco.pe/file/Ge8D-qgQowhNxvckHK2Z7fCMzKJKB6etkZUsCzcbwLDitZpFqi8JJPJAMqUYG_BQ73vfD44ev7-iiFU8q1HqZSZCRevPmCmgt_kJ-t7nXFO1w0SUktXVG_i7S1iTXu9E_84AAM7Ab44LwjrfjwXXout-qsHbqcvgStcvyAsM3qZHf4dSP4QUT1lQ8T-W2IEW-SHrD82rfc2N_AYJ4kbNv6Q_ocZNAhqwKsRrX9otp5Ay2kSYMbzklose5N9fCR-2HDa9GBCyBKFxtiFQNjiazDNfOfugSg0mXIbWd7uYfO9ufz8vFwunmcTtxEzlpdkYwOMzBCyGn-3FQOqiooxGdw.jpg&quot; alt=&quot; Sub-Store 快速生成  sing-box 机场入口+落地节点 代理链 示例1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.你希望使用 机场节点 拉 落地节点2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看  动态生成 sing-box 配置)&quot; width=&quot;226&quot; height=&quot;177&quot; loading=&quot;eager&quot; /&gt;
      &lt;/button&gt;
      &lt;div class=&quot;modal&quot; id=&quot;modal-1241-2&quot; popover=&quot;auto&quot; aria-label=&quot;Image preview&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__backdrop&quot; popovertarget=&quot;modal-1241-2&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;&lt;/button&gt;
        &lt;button type=&quot;button&quot; class=&quot;modal__close&quot; popovertarget=&quot;modal-1241-2&quot; popovertargetaction=&quot;hide&quot; aria-label=&quot;Close image preview&quot;&gt;×&lt;/button&gt;
        &lt;div class=&quot;modal__surface&quot;&gt;
          
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/4960754541902430862.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; Sub-Store 快速生成 &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/5154930575995306994.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; sing-box 机场入口+落地节点 代理链 示例&lt;br /&gt;&lt;br /&gt;1. 假设你有一个配置模板, 可以是本地文本也可以是远程配置&lt;br /&gt;&lt;br /&gt;如图1, 其中 HKG 里是自建落地节点, HKG-R 里是机场节点.&lt;br /&gt;&lt;br /&gt;你希望使用 机场节点 拉 落地节点&lt;br /&gt;&lt;br /&gt;2. 加上两条脚本操作, 如图 2(具体参数含义可查看脚本文件头部的描述, 也可以查看 &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/5154930575995306994.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/1070&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;动态生成 sing-box 配置&quot;&gt;动态生成 sing-box 配置&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;code class=&quot;language-julia&quot;&gt;https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;//&lt;/span&gt;raw&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;githubusercontent&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;xream&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;scripts&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;main&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;surge&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;modules&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;sub&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;store&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;scripts&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;sing&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;box&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;js&lt;span class=&quot;token comment&quot;&gt;#type=组合订阅&amp;amp;name=自建&amp;amp;outbound=🕳ℹ️^🇭🇰 HKG$🏷ℹ️港|hk|hongkong|kong kong|🇭🇰&lt;/span&gt;

https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;//&lt;/span&gt;raw&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;githubusercontent&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;xream&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;scripts&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;main&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;surge&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;modules&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;sub&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;store&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;scripts&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;sing&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;box&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;js&lt;span class=&quot;token comment&quot;&gt;#type=组合订阅&amp;amp;name=机场&amp;amp;outbound=🕳ℹ️^🇭🇰 HKG-R$🏷ℹ️港|hk|hongkong|kong kong|🇭🇰&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;此时可以预览, 应该能看到节点都加上了&lt;br /&gt;&lt;br /&gt;3. 添加一个脚本操作, 如图3. 此脚本的作用是给 HKG 里的每一个节点, 加上 &lt;code&gt;detour: HKG-R&lt;/code&gt;. 没优化, 反正能用(&lt;br /&gt;&lt;br /&gt;&lt;pre class=&quot;code&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;config &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$content &lt;span class=&quot;token operator&quot;&gt;??&lt;/span&gt; $files&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; relay &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token string-property property&quot;&gt;&apos;🇭🇰 HKG&apos;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;🇭🇰 HKG-R&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 其他的自己加&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outbounds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;outbound&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; r &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; relay&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;outbound&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tag&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; Array&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;isArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;outbound&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outbounds&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; outbound&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outbounds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;token operator&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    outbound&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outbounds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;tag&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;outbounds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;outbound&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&amp;gt;&lt;/span&gt; outbound&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tag &lt;span class=&quot;token operator&quot;&gt;===&lt;/span&gt; tag&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;detour &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; r
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

$content &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;JSON&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;stringify&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;config&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/5976801477509778431.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; 相关内容&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/4960853905970823886.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/1234&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;快速生成 clash.meta(mihomo) 配置示例&quot;&gt;快速生成 clash.meta(mihomo) 配置示例&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/4961213605186896472.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt;&lt;a href=&quot;https://t.me/zhetengsha/1111&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;  Surfboard 远程托管配置示例(其他代理 App 也可以参考)&quot;&gt;  Surfboard 远程托管配置示例(其他代理 App 也可以参考)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/5154930575995306994.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/1070&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;动态生成 sing-box 配置&quot;&gt;动态生成 sing-box 配置&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6327711622831803904.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/214&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Sub-Store 合集&quot;&gt;Sub-Store 合集&lt;/a&gt;  &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6327880277607583303.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;合集&quot;&gt;合集&lt;/a&gt;  &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6327792445526380187.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha/957&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;恰饭推荐&quot;&gt;恰饭推荐&lt;/a&gt;  &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6021860481923288796.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;https://t.me/zhetengsha_group&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;群组&quot;&gt;群组&lt;/a&gt; &lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6330367862535884142.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt;&lt;a href=&quot;https://t.me/xream_bot&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;联系推广&quot;&gt;联系推广&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class=&quot;tg-emoji&quot; src=&quot;/static/https://telegram.me/i/emoji/6327836885552991740.webp&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;20&quot; height=&quot;20&quot; /&gt; &lt;a href=&quot;/search/result?q=%23sing&quot; title=&quot;#sing&quot;&gt;#sing&lt;/a&gt;-box &lt;a href=&quot;/search/result?q=%23singbox&quot; title=&quot;#singbox&quot;&gt;#singbox&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Sub&quot; title=&quot;#Sub&quot;&gt;#Sub&lt;/a&gt;-Store &lt;a href=&quot;/search/result?q=%23SubStore&quot; title=&quot;#SubStore&quot;&gt;#SubStore&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E9%85%8D%E7%BD%AE&quot; title=&quot;#配置&quot;&gt;#配置&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%A4%BA%E4%BE%8B&quot; title=&quot;#示例&quot;&gt;#示例&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%90%86&quot; title=&quot;#代理&quot;&gt;#代理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E4%BB%A3%E7%90%86%E9%93%BE&quot; title=&quot;#代理链&quot;&gt;#代理链&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%BD%AE%E4%BB%A3%E7%90%86&quot; title=&quot;#前置代理&quot;&gt;#前置代理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E9%93%BE%E5%BC%8F%E4%BB%A3%E7%90%86&quot; title=&quot;#链式代理&quot;&gt;#链式代理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%90%BD%E5%9C%B0&quot; title=&quot;#落地&quot;&gt;#落地&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%90%BD%E5%9C%B0%E6%9C%BA&quot; title=&quot;#落地机&quot;&gt;#落地机&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%85%A5%E5%8F%A3&quot; title=&quot;#入口&quot;&gt;#入口&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%9C%BA%E5%9C%BA&quot; title=&quot;#机场&quot;&gt;#机场&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%9C%BA%E5%9C%BA%E5%85%A5%E5%8F%A3&quot; title=&quot;#机场入口&quot;&gt;#机场入口&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%9C%BA%E5%9C%BA%E8%8A%82%E7%82%B9&quot; title=&quot;#机场节点&quot;&gt;#机场节点&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%8A%82%E7%82%B9&quot; title=&quot;#节点&quot;&gt;#节点&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E8%AE%A2%E9%98%85&quot; title=&quot;#订阅&quot;&gt;#订阅&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23detour&quot; title=&quot;#detour&quot;&gt;#detour&lt;/a&gt;</content:encoded></item></channel></rss>