[{"data":1,"prerenderedAt":993},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fapi-testing":3},{"doc":4,"prev":956,"next":963,"resolvedType":8,"readingMinutes":113,"audience":965,"checklist":969,"related":973},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fapi-testing","API 测试与调试","curl、HTTPie、Postman、Bruno 等 API 测试工具与常用技巧","article",null,"dev-environment","开发环境","2026-02-27","i-carbon-code",{"type":15,"value":16,"toc":932},"minimark",[17,21,25,29,78,80,83,376,381,429,432,435,531,535,538,541,550,562,565,568,577,581,584,593,597,644,648,655,738,742,791,794,797,812,815,818,822,825,839,843,846,857,861,864,878,881,901,904,928],[18,19,6],"h1",{"id":20},"api-测试与调试",[22,23,24],"p",{},"这页适合作为“接口联调与排障工具箱”。核心不是工具越多越好，而是知道什么时候该用命令行、什么时候用 GUI、什么时候把请求直接写进仓库里做长期维护。",[26,27,28],"h2",{"id":28},"先按场景选工具",[30,31,32,44,52,60,69],"ul",{},[33,34,35,39,40],"li",{},[36,37,38],"strong",{},"快速复现一个请求","：优先 ",[41,42,43],"code",{},"curl",[33,45,46,39,49],{},[36,47,48],{},"命令更友好、结果更易读",[41,50,51],{},"HTTPie",[33,53,54,39,57],{},[36,55,56],{},"需要团队共享请求集和环境变量",[41,58,59],{},"Bruno",[33,61,62,65,66],{},[36,63,64],{},"需要复杂集合、脚本和协作生态","：可用 ",[41,67,68],{},"Postman",[33,70,71,39,74,77],{},[36,72,73],{},"想和代码一起版本管理",[41,75,76],{},".http"," 文件或 Bruno",[26,79,43],{"id":43},[22,81,82],{},"最通用的命令行 HTTP 客户端。",[84,85,90],"pre",{"className":86,"code":87,"language":88,"meta":89,"style":89},"language-bash shiki shiki-themes github-light github-dark","# GET 请求\ncurl https:\u002F\u002Fapi.example.com\u002Fusers\n\n# 带 Header\ncurl -H \"Authorization: Bearer TOKEN\" https:\u002F\u002Fapi.example.com\u002Fusers\n\n# POST JSON\ncurl -X POST https:\u002F\u002Fapi.example.com\u002Fusers \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\":\"Domi\",\"email\":\"[email]\"}'\n\n# PUT\ncurl -X PUT https:\u002F\u002Fapi.example.com\u002Fusers\u002F1 \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\":\"Updated\"}'\n\n# DELETE\ncurl -X DELETE https:\u002F\u002Fapi.example.com\u002Fusers\u002F1\n\n# 查看响应头\ncurl -I https:\u002F\u002Fexample.com\n\n# 详细输出（调试）\ncurl -v https:\u002F\u002Fexample.com\n\n# 下载文件\ncurl -O https:\u002F\u002Fexample.com\u002Ffile.zip\ncurl -o output.zip https:\u002F\u002Fexample.com\u002Ffile.zip\n\n# 跟随重定向\ncurl -L https:\u002F\u002Fexample.com\n\n# 使用代理\ncurl -x http:\u002F\u002F127.0.0.1:7890 https:\u002F\u002Fexample.com\n","bash","",[41,91,92,101,111,118,124,138,143,149,166,177,186,191,197,212,221,229,234,240,253,258,264,275,280,286,296,301,307,318,331,336,342,352,357,363],{"__ignoreMap":89},[93,94,97],"span",{"class":95,"line":96},"line",1,[93,98,100],{"class":99},"sJ8bj","# GET 请求\n",[93,102,104,107],{"class":95,"line":103},2,[93,105,43],{"class":106},"sScJk",[93,108,110],{"class":109},"sZZnC"," https:\u002F\u002Fapi.example.com\u002Fusers\n",[93,112,114],{"class":95,"line":113},3,[93,115,117],{"emptyLinePlaceholder":116},true,"\n",[93,119,121],{"class":95,"line":120},4,[93,122,123],{"class":99},"# 带 Header\n",[93,125,127,129,133,136],{"class":95,"line":126},5,[93,128,43],{"class":106},[93,130,132],{"class":131},"sj4cs"," -H",[93,134,135],{"class":109}," \"Authorization: Bearer TOKEN\"",[93,137,110],{"class":109},[93,139,141],{"class":95,"line":140},6,[93,142,117],{"emptyLinePlaceholder":116},[93,144,146],{"class":95,"line":145},7,[93,147,148],{"class":99},"# POST JSON\n",[93,150,152,154,157,160,163],{"class":95,"line":151},8,[93,153,43],{"class":106},[93,155,156],{"class":131}," -X",[93,158,159],{"class":109}," POST",[93,161,162],{"class":109}," https:\u002F\u002Fapi.example.com\u002Fusers",[93,164,165],{"class":131}," \\\n",[93,167,169,172,175],{"class":95,"line":168},9,[93,170,171],{"class":131},"  -H",[93,173,174],{"class":109}," \"Content-Type: application\u002Fjson\"",[93,176,165],{"class":131},[93,178,180,183],{"class":95,"line":179},10,[93,181,182],{"class":131},"  -d",[93,184,185],{"class":109}," '{\"name\":\"Domi\",\"email\":\"[email]\"}'\n",[93,187,189],{"class":95,"line":188},11,[93,190,117],{"emptyLinePlaceholder":116},[93,192,194],{"class":95,"line":193},12,[93,195,196],{"class":99},"# PUT\n",[93,198,200,202,204,207,210],{"class":95,"line":199},13,[93,201,43],{"class":106},[93,203,156],{"class":131},[93,205,206],{"class":109}," PUT",[93,208,209],{"class":109}," https:\u002F\u002Fapi.example.com\u002Fusers\u002F1",[93,211,165],{"class":131},[93,213,215,217,219],{"class":95,"line":214},14,[93,216,171],{"class":131},[93,218,174],{"class":109},[93,220,165],{"class":131},[93,222,224,226],{"class":95,"line":223},15,[93,225,182],{"class":131},[93,227,228],{"class":109}," '{\"name\":\"Updated\"}'\n",[93,230,232],{"class":95,"line":231},16,[93,233,117],{"emptyLinePlaceholder":116},[93,235,237],{"class":95,"line":236},17,[93,238,239],{"class":99},"# DELETE\n",[93,241,243,245,247,250],{"class":95,"line":242},18,[93,244,43],{"class":106},[93,246,156],{"class":131},[93,248,249],{"class":109}," DELETE",[93,251,252],{"class":109}," https:\u002F\u002Fapi.example.com\u002Fusers\u002F1\n",[93,254,256],{"class":95,"line":255},19,[93,257,117],{"emptyLinePlaceholder":116},[93,259,261],{"class":95,"line":260},20,[93,262,263],{"class":99},"# 查看响应头\n",[93,265,267,269,272],{"class":95,"line":266},21,[93,268,43],{"class":106},[93,270,271],{"class":131}," -I",[93,273,274],{"class":109}," https:\u002F\u002Fexample.com\n",[93,276,278],{"class":95,"line":277},22,[93,279,117],{"emptyLinePlaceholder":116},[93,281,283],{"class":95,"line":282},23,[93,284,285],{"class":99},"# 详细输出（调试）\n",[93,287,289,291,294],{"class":95,"line":288},24,[93,290,43],{"class":106},[93,292,293],{"class":131}," -v",[93,295,274],{"class":109},[93,297,299],{"class":95,"line":298},25,[93,300,117],{"emptyLinePlaceholder":116},[93,302,304],{"class":95,"line":303},26,[93,305,306],{"class":99},"# 下载文件\n",[93,308,310,312,315],{"class":95,"line":309},27,[93,311,43],{"class":106},[93,313,314],{"class":131}," -O",[93,316,317],{"class":109}," https:\u002F\u002Fexample.com\u002Ffile.zip\n",[93,319,321,323,326,329],{"class":95,"line":320},28,[93,322,43],{"class":106},[93,324,325],{"class":131}," -o",[93,327,328],{"class":109}," output.zip",[93,330,317],{"class":109},[93,332,334],{"class":95,"line":333},29,[93,335,117],{"emptyLinePlaceholder":116},[93,337,339],{"class":95,"line":338},30,[93,340,341],{"class":99},"# 跟随重定向\n",[93,343,345,347,350],{"class":95,"line":344},31,[93,346,43],{"class":106},[93,348,349],{"class":131}," -L",[93,351,274],{"class":109},[93,353,355],{"class":95,"line":354},32,[93,356,117],{"emptyLinePlaceholder":116},[93,358,360],{"class":95,"line":359},33,[93,361,362],{"class":99},"# 使用代理\n",[93,364,366,368,371,374],{"class":95,"line":365},34,[93,367,43],{"class":106},[93,369,370],{"class":131}," -x",[93,372,373],{"class":109}," http:\u002F\u002F127.0.0.1:7890",[93,375,274],{"class":109},[377,378,380],"h3",{"id":379},"powershell-中使用","PowerShell 中使用",[84,382,386],{"className":383,"code":384,"language":385,"meta":89,"style":89},"language-powershell shiki shiki-themes github-light github-dark","# PowerShell 的 curl 是 Invoke-WebRequest 的别名\n# 使用真正的 curl 需要 curl.exe\ncurl.exe -s https:\u002F\u002Fapi.example.com\u002Fusers | ConvertFrom-Json\n","powershell",[41,387,388,393,398],{"__ignoreMap":89},[93,389,390],{"class":95,"line":96},[93,391,392],{"class":99},"# PowerShell 的 curl 是 Invoke-WebRequest 的别名\n",[93,394,395],{"class":95,"line":103},[93,396,397],{"class":99},"# 使用真正的 curl 需要 curl.exe\n",[93,399,400,403,407,411,414,417,420,423,426],{"class":95,"line":113},[93,401,402],{"class":131},"curl.exe",[93,404,406],{"class":405},"szBVR"," -",[93,408,410],{"class":409},"sVt8B","s https:",[93,412,413],{"class":405},"\u002F\u002F",[93,415,416],{"class":131},"api.example.com",[93,418,419],{"class":405},"\u002F",[93,421,422],{"class":409},"users ",[93,424,425],{"class":405},"|",[93,427,428],{"class":131}," ConvertFrom-Json\n",[26,430,51],{"id":431},"httpie",[22,433,434],{},"更友好的命令行 HTTP 客户端：",[84,436,438],{"className":86,"code":437,"language":88,"meta":89,"style":89},"pip install httpie\n\n# GET\nhttp https:\u002F\u002Fapi.example.com\u002Fusers\n\n# POST\nhttp POST https:\u002F\u002Fapi.example.com\u002Fusers name=Domi email=[email]\n\n# 带 Header\nhttp https:\u002F\u002Fapi.example.com\u002Fusers Authorization:\"Bearer TOKEN\"\n\n# 上传文件\nhttp -f POST https:\u002F\u002Fapi.example.com\u002Fupload file@photo.jpg\n",[41,439,440,451,455,460,467,471,476,490,494,498,507,511,516],{"__ignoreMap":89},[93,441,442,445,448],{"class":95,"line":96},[93,443,444],{"class":106},"pip",[93,446,447],{"class":109}," install",[93,449,450],{"class":109}," httpie\n",[93,452,453],{"class":95,"line":103},[93,454,117],{"emptyLinePlaceholder":116},[93,456,457],{"class":95,"line":113},[93,458,459],{"class":99},"# GET\n",[93,461,462,465],{"class":95,"line":120},[93,463,464],{"class":106},"http",[93,466,110],{"class":109},[93,468,469],{"class":95,"line":126},[93,470,117],{"emptyLinePlaceholder":116},[93,472,473],{"class":95,"line":140},[93,474,475],{"class":99},"# POST\n",[93,477,478,480,482,484,487],{"class":95,"line":145},[93,479,464],{"class":106},[93,481,159],{"class":109},[93,483,162],{"class":109},[93,485,486],{"class":109}," name=Domi",[93,488,489],{"class":109}," email=[email]\n",[93,491,492],{"class":95,"line":151},[93,493,117],{"emptyLinePlaceholder":116},[93,495,496],{"class":95,"line":168},[93,497,123],{"class":99},[93,499,500,502,504],{"class":95,"line":179},[93,501,464],{"class":106},[93,503,162],{"class":109},[93,505,506],{"class":109}," Authorization:\"Bearer TOKEN\"\n",[93,508,509],{"class":95,"line":188},[93,510,117],{"emptyLinePlaceholder":116},[93,512,513],{"class":95,"line":193},[93,514,515],{"class":99},"# 上传文件\n",[93,517,518,520,523,525,528],{"class":95,"line":199},[93,519,464],{"class":106},[93,521,522],{"class":131}," -f",[93,524,159],{"class":109},[93,526,527],{"class":109}," https:\u002F\u002Fapi.example.com\u002Fupload",[93,529,530],{"class":109}," file@photo.jpg\n",[26,532,534],{"id":533},"gui-工具","GUI 工具",[377,536,59],{"id":537},"bruno",[22,539,540],{},"开源 API 客户端，集合保存在本地文件系统（Git 友好）：",[84,542,544],{"className":383,"code":543,"language":385,"meta":89,"style":89},"scoop install bruno\n",[41,545,546],{"__ignoreMap":89},[93,547,548],{"class":95,"line":96},[93,549,543],{"class":409},[30,551,552],{},[33,553,554,555],{},"项目：",[556,557,561],"a",{"href":558,"rel":559},"https:\u002F\u002Fgithub.com\u002Fusebruno\u002Fbruno",[560],"nofollow","GitHub",[377,563,68],{"id":564},"postman",[22,566,567],{},"最流行的 API 测试工具：",[84,569,571],{"className":383,"code":570,"language":385,"meta":89,"style":89},"winget install Postman.Postman\n",[41,572,573],{"__ignoreMap":89},[93,574,575],{"class":95,"line":96},[93,576,570],{"class":409},[377,578,580],{"id":579},"insomnia","Insomnia",[22,582,583],{},"轻量级 REST 客户端：",[84,585,587],{"className":383,"code":586,"language":385,"meta":89,"style":89},"winget install Insomnia.Insomnia\n",[41,588,589],{"__ignoreMap":89},[93,590,591],{"class":95,"line":96},[93,592,586],{"class":409},[26,594,596],{"id":595},"vs-code-扩展","VS Code 扩展",[598,599,600,613],"table",{},[601,602,603],"thead",{},[604,605,606,610],"tr",{},[607,608,609],"th",{},"扩展",[607,611,612],{},"说明",[614,615,616,632],"tbody",{},[604,617,618,626],{},[619,620,621],"td",{},[556,622,625],{"href":623,"rel":624},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=humao.rest-client",[560],"REST Client",[619,627,628,629,631],{},"在 ",[41,630,76],{}," 文件中发送请求",[604,633,634,641],{},[619,635,636],{},[556,637,640],{"href":638,"rel":639},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=rangav.vscode-thunder-client",[560],"Thunder Client",[619,642,643],{},"内置 API 客户端",[377,645,647],{"id":646},"rest-client-示例","REST Client 示例",[22,649,650,651,654],{},"创建 ",[41,652,653],{},"api.http"," 文件：",[84,656,659],{"className":657,"code":658,"language":464,"meta":89,"style":89},"language-http shiki shiki-themes github-light github-dark","### 获取用户列表\nGET https:\u002F\u002Fapi.example.com\u002Fusers\nAuthorization: Bearer {{token}}\n\n### 创建用户\nPOST https:\u002F\u002Fapi.example.com\u002Fusers\nContent-Type: application\u002Fjson\n\n{\n  \"name\": \"Domi\",\n  \"email\": \"[email]\"\n}\n\n### 变量定义\n@token = your-api-token\n@baseUrl = https:\u002F\u002Fapi.example.com\n",[41,660,661,666,671,676,680,685,690,695,699,704,709,714,719,723,728,733],{"__ignoreMap":89},[93,662,663],{"class":95,"line":96},[93,664,665],{},"### 获取用户列表\n",[93,667,668],{"class":95,"line":103},[93,669,670],{},"GET https:\u002F\u002Fapi.example.com\u002Fusers\n",[93,672,673],{"class":95,"line":113},[93,674,675],{},"Authorization: Bearer {{token}}\n",[93,677,678],{"class":95,"line":120},[93,679,117],{"emptyLinePlaceholder":116},[93,681,682],{"class":95,"line":126},[93,683,684],{},"### 创建用户\n",[93,686,687],{"class":95,"line":140},[93,688,689],{},"POST https:\u002F\u002Fapi.example.com\u002Fusers\n",[93,691,692],{"class":95,"line":145},[93,693,694],{},"Content-Type: application\u002Fjson\n",[93,696,697],{"class":95,"line":151},[93,698,117],{"emptyLinePlaceholder":116},[93,700,701],{"class":95,"line":168},[93,702,703],{},"{\n",[93,705,706],{"class":95,"line":179},[93,707,708],{},"  \"name\": \"Domi\",\n",[93,710,711],{"class":95,"line":188},[93,712,713],{},"  \"email\": \"[email]\"\n",[93,715,716],{"class":95,"line":193},[93,717,718],{},"}\n",[93,720,721],{"class":95,"line":199},[93,722,117],{"emptyLinePlaceholder":116},[93,724,725],{"class":95,"line":214},[93,726,727],{},"### 变量定义\n",[93,729,730],{"class":95,"line":223},[93,731,732],{},"@token = your-api-token\n",[93,734,735],{"class":95,"line":231},[93,736,737],{},"@baseUrl = https:\u002F\u002Fapi.example.com\n",[26,739,741],{"id":740},"常用测试-api","常用测试 API",[598,743,744,753],{},[601,745,746],{},[604,747,748,751],{},[607,749,750],{},"API",[607,752,612],{},[614,754,755,767,779],{},[604,756,757,764],{},[619,758,759],{},[556,760,763],{"href":761,"rel":762},"https:\u002F\u002Fjsonplaceholder.typicode.com\u002F",[560],"JSONPlaceholder",[619,765,766],{},"假数据 REST API",[604,768,769,776],{},[619,770,771],{},[556,772,775],{"href":773,"rel":774},"https:\u002F\u002Fhttpbin.org\u002F",[560],"httpbin",[619,777,778],{},"HTTP 请求测试",[604,780,781,788],{},[619,782,783],{},[556,784,787],{"href":785,"rel":786},"https:\u002F\u002Freqres.in\u002F",[560],"reqres.in",[619,789,790],{},"模拟 REST API",[26,792,793],{"id":793},"推荐排障顺序",[22,795,796],{},"调接口时，比较稳的顺序通常是：",[798,799,800,803,806,809],"ol",{},[33,801,802],{},"先确认 URL、方法、Header、Body 是否正确",[33,804,805],{},"再看响应状态码和响应体",[33,807,808],{},"再检查鉴权、代理、环境变量、CORS 或网关",[33,810,811],{},"最后再回到服务端日志和代码层面",[22,813,814],{},"很多接口问题其实在请求层就能看出来，不一定要第一时间进 IDE。",[26,816,817],{"id":817},"常见问题",[377,819,821],{"id":820},"本地能调前端里调不通","本地能调，前端里调不通",[22,823,824],{},"高频原因通常包括：",[30,826,827,830,833,836],{},[33,828,829],{},"CORS",[33,831,832],{},"Cookie \u002F 凭据没带上",[33,834,835],{},"代理配置不同",[33,837,838],{},"前端环境变量指向了错误地址",[377,840,842],{"id":841},"postman-能通curl-不通","Postman 能通，curl 不通",[22,844,845],{},"这通常说明：",[30,847,848,851,854],{},[33,849,850],{},"Header 没带全",[33,852,853],{},"Body 编码格式不同",[33,855,856],{},"重定向、代理、证书校验或认证方式存在差异",[377,858,860],{"id":859},"请求很多维护越来越乱","请求很多，维护越来越乱",[22,862,863],{},"这时更推荐：",[30,865,866,869,872],{},[33,867,868],{},"把通用环境变量抽出来",[33,870,871],{},"命名规范统一",[33,873,874,875,877],{},"长期调试用 Bruno \u002F ",[41,876,76],{}," 文件进仓库",[26,879,880],{"id":880},"延伸阅读",[30,882,883,889,895],{},[33,884,885],{},[556,886,888],{"href":887},"\u002Fdocs\u002Fapi-design","RESTful API 设计",[33,890,891],{},[556,892,894],{"href":893},"\u002Fdocs\u002Fchrome-devtools","Chrome DevTools 技巧",[33,896,897],{},[556,898,900],{"href":899},"\u002Fdocs\u002Ftesting-guide","前端测试指南",[26,902,903],{"id":903},"参考链接",[30,905,906,914,921],{},[33,907,908,913],{},[556,909,912],{"href":910,"rel":911},"https:\u002F\u002Fcurl.se\u002Fdocs\u002F",[560],"curl 文档"," — 官方文档",[33,915,916,913],{},[556,917,920],{"href":918,"rel":919},"https:\u002F\u002Fhttpie.io\u002Fdocs\u002Fcli",[560],"HTTPie 文档",[33,922,923,927],{},[556,924,59],{"href":925,"rel":926},"https:\u002F\u002Fwww.usebruno.com\u002F",[560]," — 官网",[929,930,931],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":89,"searchDepth":103,"depth":103,"links":933},[934,935,938,939,944,947,948,949,954,955],{"id":28,"depth":103,"text":28},{"id":43,"depth":103,"text":43,"children":936},[937],{"id":379,"depth":113,"text":380},{"id":431,"depth":103,"text":51},{"id":533,"depth":103,"text":534,"children":940},[941,942,943],{"id":537,"depth":113,"text":59},{"id":564,"depth":113,"text":68},{"id":579,"depth":113,"text":580},{"id":595,"depth":103,"text":596,"children":945},[946],{"id":646,"depth":113,"text":647},{"id":740,"depth":103,"text":741},{"id":793,"depth":103,"text":793},{"id":817,"depth":103,"text":817,"children":950},[951,952,953],{"id":820,"depth":113,"text":821},{"id":841,"depth":113,"text":842},{"id":859,"depth":113,"text":860},{"id":880,"depth":103,"text":880},{"id":903,"depth":103,"text":903},{"path":957,"title":958,"description":959,"docType":8,"resourceKind":9,"categoryId":960,"categoryLabel":961,"updatedAt":12,"publishedAt":12,"icon":962},"\u002Fdocs\u002Fai-image-gen","AI 图像生成","Stable Diffusion、ComfyUI、Civitai 模型与本地部署指南","ai-tools","AI 工具","i-carbon-chat-bot",{"path":893,"title":894,"description":964,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"控制台技巧、网络调试、性能分析与实用快捷键",[966,967,968],"希望把零散经验整理成长期可复用工作流的人","正在搭建开发环境、统一工具链或排查构建问题的开发者","希望阅读时顺手建立自己的操作清单或收藏体系的人",[970,971,972],"先浏览标题、摘要和目录，带着问题阅读会更高效","确认本机 Node、包管理器、终端和仓库依赖版本是否一致","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[974,979,984,989],{"path":975,"title":976,"description":977,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":978,"publishedAt":978,"icon":13},"\u002Fdocs\u002Flocal-setup","本地运行与部署","使用 bun 安装、开发、构建与预览 DomiVault 的完整本地流程与排障指引","2026-03-10",{"path":980,"title":981,"description":982,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":983,"publishedAt":983,"icon":13},"\u002Fdocs\u002Fvolta-guide","Volta Node 版本管理","使用 Volta 管理 Node.js、npm、pnpm 和 Yarn，并在项目中固定 JavaScript 工具链版本","2026-03-08",{"path":985,"title":986,"description":987,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":988,"publishedAt":988,"icon":13},"\u002Fdocs\u002Fpnpm-monorepo","pnpm 与 Monorepo","pnpm 使用技巧、workspace 配置、Monorepo 项目管理与 Turborepo","2026-02-28",{"path":990,"title":991,"description":992,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fenv-variables","环境变量管理","dotenv 配置、各平台环境变量设置、.env 文件规范与安全实践",1776215711790]