[{"data":1,"prerenderedAt":3025},["ShallowReactive",2],{"algolia":3},[4,1022,1952],{"id":5,"title":6,"articleId":7,"articleThumb":8,"body":9,"categoryId":694,"categoryInfo":994,"createDate":997,"description":998,"excerpt":999,"extension":1003,"isHidden":1004,"isHot":1005,"isRecommend":1005,"isTop":1005,"keywords":1006,"meta":1007,"navigation":1005,"path":1008,"rawbody":1009,"readingTime":1010,"seo":1011,"sitemap":1012,"stem":1013,"tagIds":1014,"tagInfo":1015,"updateDate":1019,"wordCount":1020,"__hash__":1021},"blog\u002Fblog\u002F1.Algolia DocSearch快速开启网站全文检索功能.md","Algolia DocSearch快速开启网站全文检索功能","20250605153423","https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327202906034.webp",{"type":10,"value":11,"toc":974},"minimark",[12,16,19,24,63,67,100,104,114,125,130,188,192,218,222,225,234,238,241,255,259,262,397,401,405,419,426,447,453,457,475,501,507,513,531,536,542,552,557,560,568,574,579,589,607,610,620,625,635,655,659,674,678,741,745,767,915,919,926,965,970],[13,14,15],"p",{},"Algolia 是一家专注于提供托管式搜索和实时数据查询服务的云服务平台‌，主要帮助网站、移动应用及技术文档快速集成高效、精准的搜索功能。其核心技术优势包括毫秒级响应速度、高度可定制的搜索算法、易用性强的API接口，以及对开源项目和非商业用途的免费支持。",[13,17,18],{},"Algolia 的服务支持多种语言支持 Ruby、Rails、Python、PHP、JS、Java、Android、Objective-C 等多种语言，具备关键字输入智能容错功能，并提供有搜索排名配置，并具有实时快速的特点(Algolia 在全球 12 个数据中心均有部署)。Algolia 还为移动设备提供了离线搜索引擎，其 C++ SDK 可以嵌入到应用服务器端，这样即便没有网络连接应用也能提供搜索功能。",[20,21,23],"h2",{"id":22},"_1-相关导航链接","1. 相关导航链接",[25,26,27,37,49,56],"card-group",{},[28,29,34],"card",{"icon":30,"target":31,"title":32,"to":33},"i-simple-icons-github","_blank","DocSearch免费服务申请页面","https:\u002F\u002Fdocsearch.algolia.com\u002Fapply\u002F",[13,35,36],{},"点击跳转DocSearch免费搜索服务申请页面，申请通过后，可快速集成DocSearch到项目中。",[28,38,41],{"icon":30,"target":31,"title":39,"to":40},"Algolia管理后台页面","https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Fdashboard",[13,42,43,44,48],{},"点击跳转Algolia管理后台，查看应用",[45,46,47],"code",{},"keys","，管理Algolia应用，索引和记录数据。",[28,50,53],{"icon":30,"target":31,"title":51,"to":52},"algolia\u002Fdocsearch 源码仓库","https:\u002F\u002Fgithub.com\u002Falgolia\u002Fdocsearch",[13,54,55],{},"点击跳转docsearch源码仓库，查看不同框架中docsearch的集成步骤和使用方式。",[28,57,60],{"icon":30,"target":31,"title":58,"to":59},"Algolia爬虫后台页面","https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Fcrawler\u002Fcrawlers",[13,61,62],{},"点击跳转Algolia爬虫管理后台，查看爬虫程序执行结果，手动重新触发爬虫任务或者自定义爬虫程序。",[20,64,66],{"id":65},"_2-algolia功能和特点","2. Algolia功能和特点",[68,69,70,78,84,90],"ol",{},[71,72,73,77],"li",{},[74,75,76],"strong",{},"托管式全文搜索："," Algolia 提供完整的搜索服务后端，无需部署，API即用。开发者无需自行构建搜索引擎架构，只需调用API即可实现实时搜索、模糊匹配、多语言支持等功能，轻量级集成。API响应速度快，低延迟、精准度高、有免费计划支持以及易于集成。",[71,79,80,83],{},[74,81,82],{},"性能与扩展性‌："," 支持每秒处理数千次查询，延迟低至20毫秒；‌‌可扩展至数十亿条数据，适用于电商、内容平台等高并发场景;",[71,85,86,89],{},[74,87,88],{},"‌开发者友好性‌："," 提供JavaScript、Python、Java等主流语言的SDK; 支持与Hexo、Hugo、Apifox、VuePress、VitePress等开发工具无缝集成，配置时间可缩短至数分钟；",[71,91,92,95,96,99],{},[74,93,94],{},"使用成本：","  免费版支持1万条索引和1万次\u002F月搜索请求，个人用户基本无需付费；技术文档与开源项目‌，通过申请免费",[45,97,98],{},"DocSearch","计划，自动化索引生成和搜索服务部署，显著提升文档用户体验；‌‌",[20,101,103],{"id":102},"_3-algolia-docsearch","3. Algolia DocSearch",[13,105,106,113],{},[107,108,112],"a",{"href":109,"rel":110,"target":31},"https:\u002F\u002Fdocsearch.algolia.com\u002Fdocs\u002Fwhat-is-docsearch",[111],"nofollow","Algolia DocSearch"," 是Algolia提供的免费的自动化全文搜索服务，旨在帮助开发者为他们的文档网站提供高效、精确的搜索体验。它通过智能爬虫抓取和索引在线文档，定时爬取指定网站，自动构建搜索索引，并结合Algolia的高性能搜索技术，提供即时的、上下文相关的搜索结果‌。",[13,115,116,117,120,121,124],{},"对于开发者而言，不需要繁琐的配置，只需要申请",[45,118,112],{"color":119},"primary","服务的免费计划后，用相关的 API 直接调用服务就行了。目前前端框架都有相对成熟的",[45,122,123],{"color":119},"Algolia DocSearch API","快速集成的第三方库，使用非常简单。对于使用者，只需要在网站检索框输入关键字，即可快速的搜索相应结果。",[126,127,129],"h3",{"id":128},"_31-功能和特点","3.1. 功能和特点",[131,132,133,140,146,152,158,164,170,176,182],"ul",{},[71,134,135,136,139],{},"‌",[74,137,138],{},"智能爬虫‌："," Algolia DocSearch使用定制的爬虫技术，能够深入到网站结构中，有效地抓取和提取文档信息。用户可以通过配置文件指导爬虫的工作，包括要抓取的页面、字段和过滤规则‌.",[71,141,135,142,145],{},[74,143,144],{},"数据索引‌："," 爬虫抓取的信息会被上传至Algolia的搜索索引，这是一个经过优化的数据存储，适合快速查询。Algolia支持丰富的搜索功能，如拼写纠错、部分匹配和布尔运算等‌.",[71,147,135,148,151],{},[74,149,150],{},"自定义搜索界面‌："," Algolia提供了JavaScript SDK，允许用户在自己的网站上轻松嵌入搜索框，并自定义搜索结果显示样式和交互体验‌.",[71,153,135,154,157],{},[74,155,156],{},"持续更新‌："," 配合 GitCode 上的配置仓库，每次更新文档时，DocSearch可以自动或按需重新索引，确保搜索结果始终与最新内容同步‌.",[71,159,160,163],{},[74,161,162],{},"即时性‌："," Algolia搜索引擎设计用于提供毫秒级的响应速度‌.",[71,165,166,169],{},[74,167,168],{},"准确性‌："," 通过深度学习和自然语言处理技术，提高搜索结果的相关度‌.",[71,171,172,175],{},[74,173,174],{},"可定制化‌："," 搜索框和结果展示样式可根据品牌和需求进行个性化定制‌.",[71,177,178,181],{},[74,179,180],{},"自动化‌："," 配置好后，自动化的索引更新减少了手动维护的工作量‌.",[71,183,184,187],{},[74,185,186],{},"社区支持‌："," 配置文件存储在GitCode上，方便分享和协作，同时也便于社区贡献者共同改进‌.",[126,189,191],{"id":190},"_32-应用场景","3.2 应用场景",[131,193,194,200,206,212],{},[71,195,196,199],{},[74,197,198],{},"开发文档："," 无论是开源项目的API参考，还是商业产品的用户指南，都能受益于DocSearch提供的强大搜索功能‌.",[71,201,202,205],{},[74,203,204],{},"教育平台‌："," 教学资源的查找可以通过DocSearch变得更简单快捷‌.",[71,207,208,211],{},[74,209,210],{},"博客聚合‌："," 博客聚合站点可以利用此服务提升读者的阅读体验‌.",[71,213,214,217],{},[74,215,216],{},"任何需要高效内部搜索的网站‌："," 无论大小，只要网站有大量文本内容，DocSearch都是理想选择‌.",[126,219,221],{"id":220},"_33-基本原理","3.3 基本原理",[13,223,224],{},"Algolia服务器会定期抓取我们指定的文档地址中的内容进行分析并建立索引，这样在网站搜索框中输入关键词后，前端会调用 Algolia DocSearch 的接口并显示搜索结果。这些请求、结果显示的相关逻辑都封装好了，我们要做的就是按要求插入代码、配置好网站样式以及搜索框。",[226,227,228],"note",{},[13,229,230,231,233],{},"根据 ",[45,232,112],{}," 的官方文档，默认情况下它通常一周爬取一次网站内容，用户也可自行触发爬取.",[126,235,237],{"id":236},"_34-使用要求","3.4 使用要求",[13,239,240],{},"Algolia DocSearch 提供的免费服务是需要申请的，当我们的网站满足下列条件时，Algolia 那边的工作人员才会让我们的申请通过：",[68,242,243,246,249,252],{},[71,244,245],{},"我们必须是云文档网站的所有者，网站必须是公开的。",[71,247,248],{},"网站内容必须是开源项目的技术文档或技术博客。",[71,250,251],{},"网站申请服务时必须有完整稳定的设计和内容，即确认网站做好生产准备。",[71,253,254],{},"免费计划限制，仅支持公开可访问的网站（如博客、开源项目文档），需通过简单申请流程获取API密钥。 ‌",[20,256,258],{"id":257},"_4-algolia和docsearch区别","4. Algolia和DocSearch区别",[13,260,261],{},"Algolia 是一个‌完整的商业搜索服务平台‌，而 DocSearch 是其旗下专门为‌技术文档场景定制的自动化搜索解决方案‌。两者的核心区别如下：",[263,264,265,280],"table",{},[266,267,268],"thead",{},[269,270,271,275,278],"tr",{},[272,273,274],"th",{},"对比项",[272,276,277],{},"Algolia",[272,279,98],{},[281,282,283,314,331,348,380],"tbody",{},[269,284,285,289,302],{},[286,287,288],"td",{},"定位与功能范围",[286,290,291,292,295,296,298,299,301],{},"通用型搜索引擎服务平台，支持电商、APP、企业数据等多种场景。核心功能为:",[293,294],"br",{},"  1. 分布式架构实现毫秒级响应‌。",[293,297],{}," 2. 智能排序、拼写纠错、同义词处理等算法‌。",[293,300],{}," 3.  开发者可自由定制索引规则和搜索交互‌。",[286,303,304,305,307,308,310,311,313],{},"Algolia 为‌技术文档\u002F博客‌设计的“开箱即用”方案。核心功能为：",[293,306],{}," 1. 自动爬取网站内容并构建索引‌。",[293,309],{}," 2. 提供预设的前端搜索组件(搜索框+结果页)。",[293,312],{}," 3. 仅适用于公开的技术文档类网站‌。",[269,315,316,319,325],{},[286,317,318],{},"数据接入方式",[286,320,321,322,324],{},"1. 需手动上传数据(如通过API或SDK)",[293,323],{}," 2. 使用官方爬虫工具 ‌Algolia Crawler‌ 自定义抓取逻辑‌。",[286,326,327,328,330],{},"1. 完全自动化,提交网站URL后，Algolia ‌自动定期爬取‌(默认每周一次)，可自定义定时任务执行时间。",[293,329],{},"2. 无需手动配置数据管道，适合文档更新频繁的场景‌。",[269,332,333,336,342],{},[286,334,335],{},"成本与适用性",[286,337,338,339,341],{},"1. 免费版限制 10,000 条记录‌。",[293,340],{}," 2. 高阶功能（如个性化排序）需付费‌",[286,343,344,345,347],{},"1. 对技术文档完全免费‌，无记录数量限制‌。",[293,346],{}," 2. 但需通过人工审核(网站需为公开技术内容)。",[269,349,350,353,368],{},[286,351,352],{},"集成复杂度",[286,354,355,356,358,359,361,362,364,365,367],{},"需自主开发，自行配置。",[293,357],{}," 1. 需要自己手动创建应用，认证爬取站点域名。",[293,360],{}," 2. 需要自己手动创建索引名称，自动导入数据。",[293,363],{}," 3. 需要自己编写爬虫代码。",[293,366],{},"4. 自己编写前端交互组件‌。",[286,369,370,371,373,374,376,377,379],{},"极简集成。",[293,372],{}," 1. DocSearch免费计划申请通过后，系统自行创建索引名称，认证站点域名，编写爬虫脚本。",[293,375],{},"2. 通过CDN引入CSS\u002FJS文件。",[293,378],{}," 3. 添加预设的搜索框HTML标签即可实现页面检索框弹框效果。",[269,381,382,385,388],{},[286,383,384],{},"搜索体验差异",[286,386,387],{},"需通过API参数和UI库手动实现同等效果‌。",[286,389,390,391,393,394,396],{},"1. 结果页自动高亮标题层级(h1 > h2 > h3)。",[293,392],{}," 2. 针对文档结构优化相关性排序(如优先匹配章节标题)。",[293,395],{}," 3. 内置响应式UI，适配移动端‌。",[20,398,400],{"id":399},"_5-docsearch使用说明","5. DocSearch使用说明",[126,402,404],{"id":403},"_51-申请免费资格","5.1 申请免费资格",[13,406,407,408,410,411,413,414,418],{},"首先，你需要申请 ",[45,409,277],{}," 免费的 ",[45,412,98],{},"计划资格。打开 ",[107,415,112],{"href":416,"rel":417,"target":31},"https:\u002F\u002Fdocsearch.algolia.com\u002F",[111]," 官网，点击 “Apply” 按钮，在表单项中填写你的项目信息，包括文档站的 URL（需包含协议头 https:\u002F\u002F）、邮箱、是否开源等。",[13,420,421],{},[422,423],"img",{"alt":424,"src":425},"申请表单","https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605174653671.webp",[13,427,428,429,431,432,434,435,438,439,442,443,446],{},"提交表单后，",[45,430,277],{}," 团队会审核你的申请(工作日一般是当天或者隔天就可申请通过,最迟不超过一周）。如果符合条件，他们会发邮件通知你，切记你需要回复邮件，确认你是网站站长，并且能够修改代码。通过确认后，他们会为你开通免费的 ",[45,433,98],{},"服务，Algolia DocSearch 会再发一封使用邮件，其中包含",[45,436,437],{},"appId","、",[45,440,441],{},"apiKey"," 和 ",[45,444,445],{},"indexName","，用于在网站生成框架中配置。若未回复，视为放弃请求。",[13,448,449],{},[422,450],{"alt":451,"src":452},"申请成功","https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605175441185.webp",[126,454,456],{"id":455},"_52-algolia管理后台","5.2 Algolia管理后台",[13,458,459,460,462,463,467,468,471,472,474],{},"免费的",[45,461,112],{},"计划申请通过后，我们也可以前往",[107,464,277],{"href":465,"rel":466,"target":31},"https:\u002F\u002Fdashboard.algolia.com\u002Fusers\u002Fsign_in",[111],"管理自己的后台数据，查询对应的",[45,469,470],{},"key","信息。",[45,473,112],{},"审核通过后，控制面板中会自动生成申请通过邮件返回的应用名称和应用id，默认索引名称，默认爬取程序。默认索引名称可以删除，系统审核通过时，已对申请域名进行了认证，认证后索引数据才能生效。默认爬取程序无法删除。",[68,476,477],{},[71,478,479,480,485,486,489,490,492,493,496,497,500],{},"进入",[107,481,484],{"href":482,"rel":483},"https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Findices",[111],"控制面板","后，点击左上角",[45,487,488],{},"Application","，切换申请通过的",[45,491,98],{},"应用。通过左侧",[45,494,495],{},"search","按钮查看应用索引信息，下方",[45,498,499],{}," Go To Crawler","进入爬虫程序页面",[13,502,503],{},[422,504],{"alt":505,"src":506},"","https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702162222617.webp",[68,508,510],{"start":509},2,[71,511,512],{},"索引数据页面",[13,514,515,516,519,520,522,523,526,527,530],{},"点击左侧选项栏里的",[45,517,518],{},"Search","进入索引页面，查看对应的",[45,521,445],{}," 数据，如果",[45,524,525],{},"Browse","这里没有显示数据，那说明爬取的数据可能有问题，导致没有生成对应的",[45,528,529],{},"Records","，那我们就需要排查第三步爬虫程序是否有问题。",[13,532,533],{},[422,534],{"alt":505,"src":535},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702162609300.webp",[68,537,539],{"start":538},3,[71,540,541],{},"爬虫程序页面",[13,543,544,545,547,548,551],{},"点击控制面板的",[45,546,499],{},"按钮或者左下方的",[45,549,550],{},"Data Source","按钮都可以进入爬虫程序页面。",[13,553,554],{},[422,555],{"alt":505,"src":556},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702164213759.webp",[13,558,559],{},"点击索引名称，进入爬虫配置页面",[13,561,562,565],{},[422,563],{"alt":505,"src":564},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165152222.webp",[422,566],{"alt":505,"src":567},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165158121.webp",[13,569,570,571,500],{},"点击",[45,572,573],{},"Editor",[13,575,576],{},[422,577],{"alt":505,"src":578},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165622704.webp",[13,580,581,582,585,586,588],{},"如果爬虫监控台显示成功爬取，也有",[45,583,584],{},"Monitoring Success"," 的数据，但 ",[45,587,529],{}," 为 0，那大概是爬虫提取数据的逻辑有问题，查看上图代码，查看具体的爬虫逻辑，查看是否存在错误信息。",[13,590,591,592,595,596,598,599,602,603,606],{},"像",[45,593,594],{},"pathsToMatch"," 这里是最容易出错的地方，比如: ",[45,597,594],{}," 如果是",[45,600,601],{},"https:\u002F\u002Fanyfork.github.io\u002Fblog-docs\u002Fdocs\u002F**","，但你的网址都是",[45,604,605],{},"https:\u002F\u002Fanyfork.github.io\u002Fblog-docs\u002F**","开头，那这里大概就是会提取错误，修改一下，然后点击右侧的数据进行测试。",[13,608,609],{},"一般情况下，基本都是爬虫程序爬取的域名或者路径不对导致爬虫失败，因此需要认真核对一下是否配置正确。",[68,611,613],{"start":612},4,[71,614,615,616,619],{},"点击左下角的",[45,617,618],{},"setting","查看应用配置信息。",[13,621,622],{},[422,623],{"alt":505,"src":624},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605190630560.webp",[68,626,628],{"start":627},5,[71,629,630,631,634],{},"点击右侧",[45,632,633],{},"API Keys","，查看应用的所有key信息，项目中集成会用到几个关键的key。",[13,636,637,640,641,644,645,647,648,651,652,654],{},[422,638],{"alt":505,"src":639},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605190902912.webp","\n目前项目使用",[45,642,643],{},"docSearch","只需要",[45,646,441],{},"，",[45,649,650],{},"applicationId","和",[45,653,445],{},"这3个key。",[20,656,658],{"id":657},"_6-nuxt3集成docsearch","6. Nuxt3集成DocSearch",[13,660,661,666,667,670,671,673],{},[107,662,665],{"href":663,"rel":664,"target":31},"https:\u002F\u002Falgolia.nuxtjs.org\u002Fadvanced\u002Fdocsearch\u002F",[111],"nuxt\u002Falgolia","是专为 Nuxt.js 框架设计的模块，用于简化与 Algolia 搜索引擎的集成。它提供了快速、灵活的搜索功能集成方案，适用于电商网站、博客平台、文档站点等场景，其中提供了在",[45,668,669],{},"Nuxt3","项目中使用",[45,672,98],{},"的配置教程。大概使用流畅如下：",[126,675,677],{"id":676},"_61-安装依赖","6.1 安装依赖",[679,680,681,708,724],"code-group",{},[682,683,688],"pre",{"className":684,"code":685,"filename":686,"language":687,"meta":505,"style":505},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @docsearch\u002Fjs @docsearch\u002Fcss\n","pnpm","bash",[45,689,690],{"__ignoreMap":505},[691,692,695,698,702,705],"span",{"class":693,"line":694},"line",1,[691,696,686],{"class":697},"sBMFI",[691,699,701],{"class":700},"sfazB"," add",[691,703,704],{"class":700}," @docsearch\u002Fjs",[691,706,707],{"class":700}," @docsearch\u002Fcss\n",[682,709,712],{"className":684,"code":710,"filename":711,"language":687,"meta":505,"style":505},"yarn add @docsearch\u002Fjs @docsearch\u002Fcss\n","yarn",[45,713,714],{"__ignoreMap":505},[691,715,716,718,720,722],{"class":693,"line":694},[691,717,711],{"class":697},[691,719,701],{"class":700},[691,721,704],{"class":700},[691,723,707],{"class":700},[682,725,728],{"className":684,"code":726,"filename":727,"language":687,"meta":505,"style":505},"npm install @docsearch\u002Fjs @docsearch\u002Fcss\n","npm",[45,729,730],{"__ignoreMap":505},[691,731,732,734,737,739],{"class":693,"line":694},[691,733,727],{"class":697},[691,735,736],{"class":700}," install",[691,738,704],{"class":700},[691,740,707],{"class":700},[126,742,744],{"id":743},"_62-安装模块","6.2 安装模块",[13,746,747,748,751,752,755,756,758,759,647,762,651,764,766],{},"将",[45,749,750],{"color":119},"@nuxtjs\u002Falgolia","安装到",[45,753,754],{},"nuxt","的模块中，并配置",[45,757,98],{},"申请成功后邮件返回的",[45,760,761],{},"apikey",[45,763,437],{},[45,765,445],{},"这3个key信息。",[682,768,773],{"className":769,"code":770,"filename":771,"language":772,"meta":505,"style":505},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules:['@nuxtjs\u002Falgolia']\n  algolia: {\n    apiKey: 'apiKey',\n    applicationId: 'applicationId',\n    \u002F\u002F DocSearch key is used to configure DocSearch extension.\n    docSearch: {\n      indexName: 'indexName',\n    }\n  }  \n})\n","nuxt.config.ts","ts",[45,774,775,796,818,825,842,857,864,875,891,897,906],{"__ignoreMap":505},[691,776,777,781,784,788,792],{"class":693,"line":694},[691,778,780],{"class":779},"s7zQu","export",[691,782,783],{"class":779}," default",[691,785,787],{"class":786},"s2Zo4"," defineNuxtConfig",[691,789,791],{"class":790},"sTEyZ","(",[691,793,795],{"class":794},"sMK4o","{\n",[691,797,798,802,805,808,811,813,815],{"class":693,"line":509},[691,799,801],{"class":800},"swJcz","  modules",[691,803,804],{"class":794},":",[691,806,807],{"class":790},"[",[691,809,810],{"class":794},"'",[691,812,750],{"class":700},[691,814,810],{"class":794},[691,816,817],{"class":790},"]\n",[691,819,820,823],{"class":693,"line":538},[691,821,822],{"class":790},"  algolia: ",[691,824,795],{"class":794},[691,826,827,830,832,835,837,839],{"class":693,"line":612},[691,828,829],{"class":800},"    apiKey",[691,831,804],{"class":794},[691,833,834],{"class":794}," '",[691,836,441],{"class":700},[691,838,810],{"class":794},[691,840,841],{"class":794},",\n",[691,843,844,847,849,851,853,855],{"class":693,"line":627},[691,845,846],{"class":800},"    applicationId",[691,848,804],{"class":794},[691,850,834],{"class":794},[691,852,650],{"class":700},[691,854,810],{"class":794},[691,856,841],{"class":794},[691,858,860],{"class":693,"line":859},6,[691,861,863],{"class":862},"sHwdD","    \u002F\u002F DocSearch key is used to configure DocSearch extension.\n",[691,865,867,870,872],{"class":693,"line":866},7,[691,868,869],{"class":800},"    docSearch",[691,871,804],{"class":794},[691,873,874],{"class":794}," {\n",[691,876,878,881,883,885,887,889],{"class":693,"line":877},8,[691,879,880],{"class":800},"      indexName",[691,882,804],{"class":794},[691,884,834],{"class":794},[691,886,445],{"class":700},[691,888,810],{"class":794},[691,890,841],{"class":794},[691,892,894],{"class":693,"line":893},9,[691,895,896],{"class":794},"    }\n",[691,898,900,903],{"class":693,"line":899},10,[691,901,902],{"class":794},"  }",[691,904,905],{"class":790},"  \n",[691,907,909,912],{"class":693,"line":908},11,[691,910,911],{"class":794},"}",[691,913,914],{"class":790},")\n",[126,916,918],{"id":917},"_63-使用组件","6.3 使用组件",[13,920,921,922,925],{},"将组件",[45,923,924],{},"\u003CAlgoliaDocSearch \u002F>","放置在需要展示搜索的地方，页面上就会展示出搜索框，点击弹出一个模态框，输入关键字，即可全局进行文本搜索。",[682,927,932],{"className":928,"code":929,"filename":930,"language":931,"meta":505,"style":505},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003CAlgoliaDocSearch \u002F>\n\u003C\u002Ftemplate>\n","index.vue","vue",[45,933,934,945,956],{"__ignoreMap":505},[691,935,936,939,942],{"class":693,"line":694},[691,937,938],{"class":794},"\u003C",[691,940,941],{"class":800},"template",[691,943,944],{"class":794},">\n",[691,946,947,950,953],{"class":693,"line":509},[691,948,949],{"class":794},"  \u003C",[691,951,952],{"class":800},"AlgoliaDocSearch",[691,954,955],{"class":794}," \u002F>\n",[691,957,958,961,963],{"class":693,"line":538},[691,959,960],{"class":794},"\u003C\u002F",[691,962,941],{"class":800},[691,964,944],{"class":794},[13,966,967],{},[422,968],{"alt":505,"src":969},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702182342087.webp",[971,972,973],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":505,"searchDepth":538,"depth":538,"links":975},[976,977,978,984,985,989],{"id":22,"depth":509,"text":23},{"id":65,"depth":509,"text":66},{"id":102,"depth":509,"text":103,"children":979},[980,981,982,983],{"id":128,"depth":538,"text":129},{"id":190,"depth":538,"text":191},{"id":220,"depth":538,"text":221},{"id":236,"depth":538,"text":237},{"id":257,"depth":509,"text":258},{"id":399,"depth":509,"text":400,"children":986},[987,988],{"id":403,"depth":538,"text":404},{"id":455,"depth":538,"text":456},{"id":657,"depth":509,"text":658,"children":990},[991,992,993],{"id":676,"depth":538,"text":677},{"id":743,"depth":538,"text":744},{"id":917,"depth":538,"text":918},{"name":995,"symbol":495,"icon":996,"id":694},"全文检索","line-md:file-search","2025-06-05 15:34:23","‌ Algolia DocSearch为网站提供了高效、精准、免费的文档搜索服务功能，可以快速实现网站全文检索，尤其适合技术文档、博客等需要大量文本内容检索的站点，集成简单，使用方便。本文将系统的介绍Nuxt3项目中如何快速集成和使用DocSearch。",{"type":10,"value":1000},[1001],[13,1002,15],{},"md",false,true,"Algolia,docSearch,网站检索,文档检索,全文检索,检索功能。",{},"\u002Fblog\u002Falgolia-docsearch","---\ntitle: Algolia DocSearch快速开启网站全文检索功能\ndescription: ‌ Algolia DocSearch为网站提供了高效、精准、免费的文档搜索服务功能，可以快速实现网站全文检索，尤其适合技术文档、博客等需要大量文本内容检索的站点，集成简单，使用方便。本文将系统的介绍Nuxt3项目中如何快速集成和使用DocSearch。\nkeywords: Algolia,docSearch,网站检索,文档检索,全文检索,检索功能。\narticleId: 20250605153423\ncreateDate: \"2025-06-05 15:34:23\"\nupdateDate: \"2026-03-11 22:22:52\"\narticleThumb: https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327202906034.webp\ntagIds: \n    - 1\ncategoryId: 1\nisTop: true\nisRecommend: true\nisHot: true\nisHidden: false\nnavigation: true\n---\n\nAlgolia 是一家专注于提供托管式搜索和实时数据查询服务的云服务平台‌，主要帮助网站、移动应用及技术文档快速集成高效、精准的搜索功能。其核心技术优势包括毫秒级响应速度、高度可定制的搜索算法、易用性强的API接口，以及对开源项目和非商业用途的免费支持。\n\u003C!--more-->\n\nAlgolia 的服务支持多种语言支持 Ruby、Rails、Python、PHP、JS、Java、Android、Objective-C 等多种语言，具备关键字输入智能容错功能，并提供有搜索排名配置，并具有实时快速的特点(Algolia 在全球 12 个数据中心均有部署)。Algolia 还为移动设备提供了离线搜索引擎，其 C++ SDK 可以嵌入到应用服务器端，这样即便没有网络连接应用也能提供搜索功能。\n\n## 1. 相关导航链接\n::card-group\n\n::card\n---\ntitle: DocSearch免费服务申请页面\nicon: i-simple-icons-github\nto: https:\u002F\u002Fdocsearch.algolia.com\u002Fapply\u002F\ntarget: _blank\n---\n点击跳转DocSearch免费搜索服务申请页面，申请通过后，可快速集成DocSearch到项目中。\n::\n\n::card\n---\ntitle: Algolia管理后台页面\nicon: i-simple-icons-github\nto: https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Fdashboard\ntarget: _blank\n---\n点击跳转Algolia管理后台，查看应用`keys`，管理Algolia应用，索引和记录数据。\n::\n\n::card\n---\ntitle: algolia\u002Fdocsearch 源码仓库\nicon: i-simple-icons-github\nto: https:\u002F\u002Fgithub.com\u002Falgolia\u002Fdocsearch\ntarget: _blank\n---\n点击跳转docsearch源码仓库，查看不同框架中docsearch的集成步骤和使用方式。\n::\n\n::card\n---\ntitle: Algolia爬虫后台页面\nicon: i-simple-icons-github\nto: https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Fcrawler\u002Fcrawlers\ntarget: _blank\n---\n点击跳转Algolia爬虫管理后台，查看爬虫程序执行结果，手动重新触发爬虫任务或者自定义爬虫程序。\n::\n\n::\n\n## 2. Algolia功能和特点\n1. **托管式全文搜索：** Algolia 提供完整的搜索服务后端，无需部署，API即用。开发者无需自行构建搜索引擎架构，只需调用API即可实现实时搜索、模糊匹配、多语言支持等功能，轻量级集成。API响应速度快，低延迟、精准度高、有免费计划支持以及易于集成。\n\n2. **性能与扩展性‌：** 支持每秒处理数千次查询，延迟低至20毫秒；‌‌可扩展至数十亿条数据，适用于电商、内容平台等高并发场景;\n\n3. **‌开发者友好性‌：** 提供JavaScript、Python、Java等主流语言的SDK; 支持与Hexo、Hugo、Apifox、VuePress、VitePress等开发工具无缝集成，配置时间可缩短至数分钟；\n\n4. **使用成本：**  免费版支持1万条索引和1万次\u002F月搜索请求，个人用户基本无需付费；技术文档与开源项目‌，通过申请免费`DocSearch`计划，自动化索引生成和搜索服务部署，显著提升文档用户体验；‌‌\n\n## 3. Algolia DocSearch\n[Algolia DocSearch](https:\u002F\u002Fdocsearch.algolia.com\u002Fdocs\u002Fwhat-is-docsearch){target=_blank} 是Algolia提供的免费的自动化全文搜索服务，旨在帮助开发者为他们的文档网站提供高效、精确的搜索体验。它通过智能爬虫抓取和索引在线文档，定时爬取指定网站，自动构建搜索索引，并结合Algolia的高性能搜索技术，提供即时的、上下文相关的搜索结果‌。\n\n对于开发者而言，不需要繁琐的配置，只需要申请`Algolia DocSearch`{color=primary}服务的免费计划后，用相关的 API 直接调用服务就行了。目前前端框架都有相对成熟的`Algolia DocSearch API`{color=primary}快速集成的第三方库，使用非常简单。对于使用者，只需要在网站检索框输入关键字，即可快速的搜索相应结果。\n\n\n### 3.1. 功能和特点\n- ‌**智能爬虫‌：** Algolia DocSearch使用定制的爬虫技术，能够深入到网站结构中，有效地抓取和提取文档信息。用户可以通过配置文件指导爬虫的工作，包括要抓取的页面、字段和过滤规则‌.\n- ‌**数据索引‌：** 爬虫抓取的信息会被上传至Algolia的搜索索引，这是一个经过优化的数据存储，适合快速查询。Algolia支持丰富的搜索功能，如拼写纠错、部分匹配和布尔运算等‌.\n- ‌**自定义搜索界面‌：** Algolia提供了JavaScript SDK，允许用户在自己的网站上轻松嵌入搜索框，并自定义搜索结果显示样式和交互体验‌.\n- ‌**持续更新‌：** 配合 GitCode 上的配置仓库，每次更新文档时，DocSearch可以自动或按需重新索引，确保搜索结果始终与最新内容同步‌.\n- **即时性‌：** Algolia搜索引擎设计用于提供毫秒级的响应速度‌.\n- **准确性‌：** 通过深度学习和自然语言处理技术，提高搜索结果的相关度‌.\n- **可定制化‌：** 搜索框和结果展示样式可根据品牌和需求进行个性化定制‌.\n- **自动化‌：** 配置好后，自动化的索引更新减少了手动维护的工作量‌.\n- **社区支持‌：** 配置文件存储在GitCode上，方便分享和协作，同时也便于社区贡献者共同改进‌.\n### 3.2 应用场景\n- **开发文档：** 无论是开源项目的API参考，还是商业产品的用户指南，都能受益于DocSearch提供的强大搜索功能‌.\n- **教育平台‌：** 教学资源的查找可以通过DocSearch变得更简单快捷‌.\n- **博客聚合‌：** 博客聚合站点可以利用此服务提升读者的阅读体验‌.\n- **任何需要高效内部搜索的网站‌：** 无论大小，只要网站有大量文本内容，DocSearch都是理想选择‌.\n\n\n### 3.3 基本原理\nAlgolia服务器会定期抓取我们指定的文档地址中的内容进行分析并建立索引，这样在网站搜索框中输入关键词后，前端会调用 Algolia DocSearch 的接口并显示搜索结果。这些请求、结果显示的相关逻辑都封装好了，我们要做的就是按要求插入代码、配置好网站样式以及搜索框。\n::note\n根据 `Algolia DocSearch` 的官方文档，默认情况下它通常一周爬取一次网站内容，用户也可自行触发爬取.\n::\n\n### 3.4 使用要求\nAlgolia DocSearch 提供的免费服务是需要申请的，当我们的网站满足下列条件时，Algolia 那边的工作人员才会让我们的申请通过：\n1. 我们必须是云文档网站的所有者，网站必须是公开的。\n2. 网站内容必须是开源项目的技术文档或技术博客。\n3. 网站申请服务时必须有完整稳定的设计和内容，即确认网站做好生产准备。\n4. 免费计划限制，仅支持公开可访问的网站（如博客、开源项目文档），需通过简单申请流程获取API密钥。 ‌\n\n## 4. Algolia和DocSearch区别\nAlgolia 是一个‌完整的商业搜索服务平台‌，而 DocSearch 是其旗下专门为‌技术文档场景定制的自动化搜索解决方案‌。两者的核心区别如下：\n| 对比项    | Algolia   | DocSearch                    |\n|---------|-----------|--------------------------|\n| 定位与功能范围  |    通用型搜索引擎服务平台，支持电商、APP、企业数据等多种场景。核心功能为:\u003C\u002Fbr>  1. 分布式架构实现毫秒级响应‌。\u003C\u002Fbr> 2. 智能排序、拼写纠错、同义词处理等算法‌。\u003C\u002Fbr> 3.  开发者可自由定制索引规则和搜索交互‌。    | Algolia 为‌技术文档\u002F博客‌设计的“开箱即用”方案。核心功能为：\u003C\u002Fbr> 1. 自动爬取网站内容并构建索引‌。\u003C\u002Fbr> 2. 提供预设的前端搜索组件(搜索框+结果页)。\u003C\u002Fbr> 3. 仅适用于公开的技术文档类网站‌。 |\n| 数据接入方式  | 1. 需手动上传数据(如通过API或SDK)\u003C\u002Fbr> 2. 使用官方爬虫工具 ‌Algolia Crawler‌ 自定义抓取逻辑‌。    | 1. 完全自动化,提交网站URL后，Algolia ‌自动定期爬取‌(默认每周一次)，可自定义定时任务执行时间。\u003C\u002Fbr>2. 无需手动配置数据管道，适合文档更新频繁的场景‌。 |\n| 成本与适用性 | 1. 免费版限制 10,000 条记录‌。\u003C\u002Fbr> 2. 高阶功能（如个性化排序）需付费‌ | 1. 对技术文档完全免费‌，无记录数量限制‌。\u003C\u002Fbr> 2. 但需通过人工审核(网站需为公开技术内容)。 |\n| 集成复杂度 | 需自主开发，自行配置。\u003Cbr\u002F> 1. 需要自己手动创建应用，认证爬取站点域名。\u003Cbr\u002F> 2. 需要自己手动创建索引名称，自动导入数据。\u003Cbr> 3. 需要自己编写爬虫代码。\u003Cbr\u002F>4. 自己编写前端交互组件‌。 | 极简集成。\u003Cbr> 1. DocSearch免费计划申请通过后，系统自行创建索引名称，认证站点域名，编写爬虫脚本。\u003Cbr\u002F>2. 通过CDN引入CSS\u002FJS文件。\u003Cbr\u002F> 3. 添加预设的搜索框HTML标签即可实现页面检索框弹框效果。 |\n| 搜索体验差异 | 需通过API参数和UI库手动实现同等效果‌。 | 1. 结果页自动高亮标题层级(h1 > h2 > h3)。\u003Cbr\u002F> 2. 针对文档结构优化相关性排序(如优先匹配章节标题)。\u003Cbr\u002F> 3. 内置响应式UI，适配移动端‌。 |\n\n\n## 5. DocSearch使用说明\n### 5.1 申请免费资格\n首先，你需要申请 `Algolia` 免费的 `DocSearch`计划资格。打开 [Algolia DocSearch](https:\u002F\u002Fdocsearch.algolia.com\u002F){target=_blank} 官网，点击 “Apply” 按钮，在表单项中填写你的项目信息，包括文档站的 URL（需包含协议头 https:\u002F\u002F）、邮箱、是否开源等。\n\n![申请表单](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605174653671.webp)\n\n提交表单后，`Algolia` 团队会审核你的申请(工作日一般是当天或者隔天就可申请通过,最迟不超过一周）。如果符合条件，他们会发邮件通知你，切记你需要回复邮件，确认你是网站站长，并且能够修改代码。通过确认后，他们会为你开通免费的 `DocSearch`服务，Algolia DocSearch 会再发一封使用邮件，其中包含`appId`、`apiKey` 和 `indexName`，用于在网站生成框架中配置。若未回复，视为放弃请求。\n\n![申请成功](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605175441185.webp)\n### 5.2 Algolia管理后台\n免费的`Algolia DocSearch`计划申请通过后，我们也可以前往[Algolia](https:\u002F\u002Fdashboard.algolia.com\u002Fusers\u002Fsign_in){target=_blank}管理自己的后台数据，查询对应的`key`信息。`Algolia DocSearch`审核通过后，控制面板中会自动生成申请通过邮件返回的应用名称和应用id，默认索引名称，默认爬取程序。默认索引名称可以删除，系统审核通过时，已对申请域名进行了认证，认证后索引数据才能生效。默认爬取程序无法删除。\n\n1. 进入[控制面板](https:\u002F\u002Fdashboard.algolia.com\u002Fapps\u002FOBYO5BJ5I3\u002Findices)后，点击左上角`Application`，切换申请通过的`DocSearch`应用。通过左侧`search`按钮查看应用索引信息，下方` Go To Crawler`进入爬虫程序页面\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702162222617.webp)\n\n\n2. 索引数据页面\n\n\n点击左侧选项栏里的`Search`进入索引页面，查看对应的`indexName` 数据，如果`Browse`这里没有显示数据，那说明爬取的数据可能有问题，导致没有生成对应的`Records`，那我们就需要排查第三步爬虫程序是否有问题。\n\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702162609300.webp)\n\n\n3. 爬虫程序页面\n\n\n点击控制面板的` Go To Crawler`按钮或者左下方的`Data Source`按钮都可以进入爬虫程序页面。\n\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702164213759.webp)\n\n\n点击索引名称，进入爬虫配置页面\n\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165152222.webp)\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165158121.webp)\n\n\n点击`Editor`进入爬虫程序页面\n\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702165622704.webp)\n\n\n如果爬虫监控台显示成功爬取，也有`Monitoring Success` 的数据，但 `Records` 为 0，那大概是爬虫提取数据的逻辑有问题，查看上图代码，查看具体的爬虫逻辑，查看是否存在错误信息。\n\n\n像`pathsToMatch` 这里是最容易出错的地方，比如: `pathsToMatch` 如果是`https:\u002F\u002Fanyfork.github.io\u002Fblog-docs\u002Fdocs\u002F**`，但你的网址都是`https:\u002F\u002Fanyfork.github.io\u002Fblog-docs\u002F**`开头，那这里大概就是会提取错误，修改一下，然后点击右侧的数据进行测试。\n\n\n一般情况下，基本都是爬虫程序爬取的域名或者路径不对导致爬虫失败，因此需要认真核对一下是否配置正确。\n\n\n\n4. 点击左下角的`setting`查看应用配置信息。\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605190630560.webp)\n\n5. 点击右侧`API Keys`，查看应用的所有key信息，项目中集成会用到几个关键的key。\n\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250605190902912.webp)\n目前项目使用`docSearch`只需要`apiKey`，`applicationId`和`indexName`这3个key。\n\n\n## 6. Nuxt3集成DocSearch\n\n[nuxt\u002Falgolia](https:\u002F\u002Falgolia.nuxtjs.org\u002Fadvanced\u002Fdocsearch\u002F){target=_blank}是专为 Nuxt.js 框架设计的模块，用于简化与 Algolia 搜索引擎的集成。它提供了快速、灵活的搜索功能集成方案，适用于电商网站、博客平台、文档站点等场景，其中提供了在`Nuxt3`项目中使用`DocSearch`的配置教程。大概使用流畅如下：\n\n\n### 6.1 安装依赖\n::code-group\n\n```bash [pnpm]\npnpm add @docsearch\u002Fjs @docsearch\u002Fcss\n```\n\n```bash [yarn]\nyarn add @docsearch\u002Fjs @docsearch\u002Fcss\n```\n\n```bash [npm]\nnpm install @docsearch\u002Fjs @docsearch\u002Fcss\n```\n::\n\n\n### 6.2 安装模块\n将`@nuxtjs\u002Falgolia`{color=primary}安装到`nuxt`的模块中，并配置`DocSearch`申请成功后邮件返回的`apikey`，`appId`和`indexName`这3个key信息。\n```ts[nuxt.config.ts]\nexport default defineNuxtConfig({\n  modules:['@nuxtjs\u002Falgolia']\n  algolia: {\n    apiKey: 'apiKey',\n    applicationId: 'applicationId',\n    \u002F\u002F DocSearch key is used to configure DocSearch extension.\n    docSearch: {\n      indexName: 'indexName',\n    }\n  }  \n})\n```\n### 6.3 使用组件\n将组件`\u003CAlgoliaDocSearch \u002F>`放置在需要展示搜索的地方，页面上就会展示出搜索框，点击弹出一个模态框，输入关键字，即可全局进行文本搜索。\n```vue[index.vue]\n\u003Ctemplate>\n  \u003CAlgoliaDocSearch \u002F>\n\u003C\u002Ftemplate>\n```\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250702182342087.webp)",19.5,{"title":6,"description":998},{"loc":1008},"blog\u002F1.Algolia DocSearch快速开启网站全文检索功能",[694],[1016],{"name":277,"icon":1017,"symbol":1018,"id":694},"devicon:algolia","algolia","2026-03-11 22:22:52",3509,"5_w3ATmnwxumdP5P1n5whfIHmhMeU_XSK4b78MW5J1k",{"id":1023,"title":1024,"articleId":1025,"articleThumb":1026,"body":1027,"categoryId":908,"categoryInfo":1926,"createDate":1930,"description":1931,"excerpt":1932,"extension":1003,"isHidden":1004,"isHot":1005,"isRecommend":1004,"isTop":1004,"keywords":1936,"meta":1937,"navigation":1005,"path":1938,"rawbody":1939,"readingTime":1940,"seo":1941,"sitemap":1942,"stem":1943,"tagIds":1944,"tagInfo":1945,"updateDate":1949,"wordCount":1950,"__hash__":1951},"blog\u002Fblog\u002F6.GitHub克隆拉取和推送代码时443超时问题解决方法.md","GitHub克隆拉取和推送代码时443超时问题解决方法","20250629153609","https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327204841213.webp",{"type":10,"value":1028,"toc":1915},[1029,1032,1036,1039,1042,1046,1049,1064,1069,1072,1084,1089,1093,1104,1111,1124,1143,1149,1162,1169,1175,1191,1194,1208,1214,1491,1495,1505,1508,1558,1561,1587,1591,1594,1598,1608,1612,1617,1620,1666,1675,1714,1719,1722,1747,1755,1760,1763,1795,1798,1823,1828,1831,1873,1875,1909,1912],[13,1030,1031],{},"在国内由于网络原因，在命令窗口能够Ping通github.com域名，但通过git命令操作github仓库代码时，无论是克隆，拉取、推送还是提交，经常会出现fatal: unable to access 'xxx': Failed to connect to github.com port 443: Timed out 禁止访问连接或者github连接超时异常，有时候即使开了梯子也没用，把VPN工具改成全局路由模式也不行。下面记录几种常见解决方法，彻底解决git命令连接github连接超时问题。",[20,1033,1035],{"id":1034},"_1-修改hosts文件","1 修改hosts文件",[13,1037,1038],{},"Hosts文件是系统中用于将网址域名与IP地址进行快速映射的数据库，在用户访问网站时优先被查询。这个没有扩展名的系统文件，虽然不起眼，却扮演着至关重要的角色。它类似于一个关联“数据库”，将众多常用的网址域名与对应的IP地址紧密相连。每当用户在浏览器中输入一个网址并尝试登录时，系统会首先自动在Hosts文件中寻找相应的IP地址。一旦找到，系统会迅速打开对应的网页；若未找到，则会自动将网址提交至DNS域名解析服务器进行IP地址的深入解析。",[13,1040,1041],{},"在解决 GitHub 在提交代码时出现 443 错误的问题时，修改 hosts 文件是一个可能的解决方案。这通常发生在 GitHub 的 IP 地址被错误地解析或者 DNS 解析出现问题的情况下，导致连接超时问题。通过修改hosts文件后，你可以绕过国内的访问限制，当尝试访问github及其相关域名时，系统将优先使用这些映射，从而可能解决网络连通性问题。以下是具体步骤：",[126,1043,1045],{"id":1044},"_11-查找github的ip地址","1.1 查找GitHub的IP地址",[13,1047,1048],{},"首先，你需要找到 GitHub 的 IP 地址。可以通过运行以下命令来获取 GitHub 的 IP 地址：",[682,1050,1054],{"className":1051,"code":1052,"language":1053,"meta":505,"style":505},"language-Bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ping github.com\n","Bash",[45,1055,1056],{"__ignoreMap":505},[691,1057,1058,1061],{"class":693,"line":694},[691,1059,1060],{"class":697},"ping",[691,1062,1063],{"class":700}," github.com\n",[13,1065,1066],{},[422,1067],{"alt":505,"src":1068},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250629165553736.webp",[13,1070,1071],{},"或者，你可以使用以下命令获取更多 IP 地址：",[682,1073,1075],{"className":1051,"code":1074,"language":1053,"meta":505,"style":505},"nslookup github.com\n",[45,1076,1077],{"__ignoreMap":505},[691,1078,1079,1082],{"class":693,"line":694},[691,1080,1081],{"class":697},"nslookup",[691,1083,1063],{"class":700},[13,1085,1086],{},[422,1087],{"alt":505,"src":1088},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250629165553775.webp",[126,1090,1092],{"id":1091},"_12-手动编辑hosts文件","1.2 手动编辑hosts文件",[13,1094,1095,1096,1099,1100,1103],{},"在不同操作系统中，Hosts文件的位置各有不同，便于管理和编辑。例如，在Windows系统中，它通常位于",[45,1097,1098],{"color":119},"C:\\Windows\\System32\\drivers\\etc\\hosts","路径下；而在Android和iOS系统中，它则分别位于",[45,1101,1102],{"color":119},"\u002Fetc\u002Fhosts和\u002Fprivate\u002Fetc\u002Fhosts","等路径。对于Mac OS X系统，其位置则可能因版本不同而有所差异。",[131,1105,1106],{},[71,1107,1108],{},[74,1109,1110],{},"对于Windows系统",[13,1112,1113,1114,1117,1118,1120,1121,1123],{},"1、",[74,1115,1116],{},"以管理员权限身份","，通过记事本打开",[45,1119,1098],{"color":119},"文件。",[293,1122],{},"\n2、在文件末尾添加以下行（替换 \u003Cgithub_ip> 为你从 ping 或 nslookup 命令中获取的 IP 地址）:",[682,1125,1127],{"className":684,"code":1126,"language":687,"meta":505,"style":505}," \u003Cgithub_ip> github.com\n",[45,1128,1129],{"__ignoreMap":505},[691,1130,1131,1134,1137,1140],{"class":693,"line":694},[691,1132,1133],{"class":794}," \u003C",[691,1135,1136],{"class":697},"github_ip",[691,1138,1139],{"class":790},"> ",[691,1141,1142],{"class":700},"github.com\n",[13,1144,1145,1146,1148],{},"3、保存修改后的配置文件，并关闭文件。",[293,1147],{},"\n4、为了确保更改生效，你可以清空 DNS 缓存，在终端刷新本地DNS缓存：",[682,1150,1152],{"className":684,"code":1151,"language":687,"meta":505,"style":505},"ipconfig \u002Fflushdns\n",[45,1153,1154],{"__ignoreMap":505},[691,1155,1156,1159],{"class":693,"line":694},[691,1157,1158],{"class":697},"ipconfig",[691,1160,1161],{"class":700}," \u002Fflushdns\n",[131,1163,1164],{},[71,1165,1166],{},[74,1167,1168],{},"对于 macOS 或 Linux",[13,1170,1171,1172,1174],{},"1、打开终端。",[293,1173],{},"\n2、使用文本编辑器打开 \u002Fetc\u002Fhosts 文件，例如使用命令：",[682,1176,1178],{"className":684,"code":1177,"language":687,"meta":505,"style":505}," sudo vi \u002Fetc\u002Fhosts\n",[45,1179,1180],{"__ignoreMap":505},[691,1181,1182,1185,1188],{"class":693,"line":694},[691,1183,1184],{"class":697}," sudo",[691,1186,1187],{"class":700}," vi",[691,1189,1190],{"class":700}," \u002Fetc\u002Fhosts\n",[13,1192,1193],{},"3、在文件末尾添加以下行（同样替换 \u003Cgithub_ip>）：",[682,1195,1196],{"className":684,"code":1126,"language":687,"meta":505,"style":505},[45,1197,1198],{"__ignoreMap":505},[691,1199,1200,1202,1204,1206],{"class":693,"line":694},[691,1201,1133],{"class":794},[691,1203,1136],{"class":697},[691,1205,1139],{"class":790},[691,1207,1142],{"class":700},[13,1209,1210,1211,1213],{},"4、保存修改后的配置文件，并关闭文件。",[293,1212],{},"\n5、在 macOS 或 Linux 上，通常不需要手动清空 DNS 缓存，因为系统会自动处理。但如果你怀疑有缓存问题，可以尝试重启你的计算机。",[1215,1216,1218,1235,1488],"callout",{"color":119,"icon":1217},"circum:warning",[13,1219,1220,1221,1223,1224,1226,1227,1230,1231,1234],{},"温馨提示",[293,1222],{},"\n1 修改hosts方法可能不太稳定，但至少在一定程度上能够解决问题。如果过一段时间后，发现修改hosts也无法连接，需要重新修改hosts文件中ip和github映射关系。",[293,1225],{},"\n2 如果",[45,1228,1229],{},"hosts","文件中加入",[45,1232,1233],{},"\u003Cgithub ip> github.com","后发现还是连接不通，可以尝试加入以下IP地址和域名映射关系：",[682,1236,1238],{"className":684,"code":1237,"language":687,"meta":505,"style":505},"185.199.108.154   github.githubassets.com\n140.82.113.22     central.github.com\n185.199.108.133   desktop.githubusercontent.com\n185.199.109.153   assets-cdn.github.com\n185.199.110.133   camo.githubusercontent.com\n185.199.108.133   github.map.fastly.net\n151.101.201.194   github.global.ssl.fastly.net\n140.82.116.3      gist.github.com\n185.199.108.153   github.io\n140.82.116.3      github.com\n140.82.116.6      api.github.com\n185.199.111.133   raw.githubusercontent.com\n185.199.108.133   user-images.githubusercontent.com\n185.199.108.133   favicons.githubusercontent.com\n185.199.110.133   avatars5.githubusercontent.com\n185.199.108.133   avatars4.githubusercontent.com\n185.199.108.133   avatars3.githubusercontent.com\n185.199.109.133   avatars2.githubusercontent.com\n185.199.108.133   avatars1.githubusercontent.com\n185.199.108.133   avatars0.githubusercontent.com\n185.199.109.133   avatars.githubusercontent.com\n140.82.116.9      codeload.github.com\n52.217.135.153    github-cloud.s3.amazonaws.com\n3.5.21.109        github-com.s3.amazonaws.com\n3.5.29.177        github-production-release-asset-2e65be.s3.amazonaws.com\n52.216.63.25      github-production-user-asset-6210df.s3.amazonaws.com\n52.217.223.1      github-production-repository-file-5c1aeb.s3.amazonaws.com\n185.199.110.153   githubstatus.com\n140.82.112.17     github.community\n185.199.108.133   media.githubusercontent.com\n",[45,1239,1240,1248,1256,1264,1272,1280,1287,1295,1303,1311,1318,1326,1335,1343,1351,1359,1367,1375,1384,1392,1400,1408,1417,1426,1435,1444,1453,1462,1471,1480],{"__ignoreMap":505},[691,1241,1242,1245],{"class":693,"line":694},[691,1243,1244],{"class":697},"185.199.108.154",[691,1246,1247],{"class":700},"   github.githubassets.com\n",[691,1249,1250,1253],{"class":693,"line":509},[691,1251,1252],{"class":697},"140.82.113.22",[691,1254,1255],{"class":700},"     central.github.com\n",[691,1257,1258,1261],{"class":693,"line":538},[691,1259,1260],{"class":697},"185.199.108.133",[691,1262,1263],{"class":700},"   desktop.githubusercontent.com\n",[691,1265,1266,1269],{"class":693,"line":612},[691,1267,1268],{"class":697},"185.199.109.153",[691,1270,1271],{"class":700},"   assets-cdn.github.com\n",[691,1273,1274,1277],{"class":693,"line":627},[691,1275,1276],{"class":697},"185.199.110.133",[691,1278,1279],{"class":700},"   camo.githubusercontent.com\n",[691,1281,1282,1284],{"class":693,"line":859},[691,1283,1260],{"class":697},[691,1285,1286],{"class":700},"   github.map.fastly.net\n",[691,1288,1289,1292],{"class":693,"line":866},[691,1290,1291],{"class":697},"151.101.201.194",[691,1293,1294],{"class":700},"   github.global.ssl.fastly.net\n",[691,1296,1297,1300],{"class":693,"line":877},[691,1298,1299],{"class":697},"140.82.116.3",[691,1301,1302],{"class":700},"      gist.github.com\n",[691,1304,1305,1308],{"class":693,"line":893},[691,1306,1307],{"class":697},"185.199.108.153",[691,1309,1310],{"class":700},"   github.io\n",[691,1312,1313,1315],{"class":693,"line":899},[691,1314,1299],{"class":697},[691,1316,1317],{"class":700},"      github.com\n",[691,1319,1320,1323],{"class":693,"line":908},[691,1321,1322],{"class":697},"140.82.116.6",[691,1324,1325],{"class":700},"      api.github.com\n",[691,1327,1329,1332],{"class":693,"line":1328},12,[691,1330,1331],{"class":697},"185.199.111.133",[691,1333,1334],{"class":700},"   raw.githubusercontent.com\n",[691,1336,1338,1340],{"class":693,"line":1337},13,[691,1339,1260],{"class":697},[691,1341,1342],{"class":700},"   user-images.githubusercontent.com\n",[691,1344,1346,1348],{"class":693,"line":1345},14,[691,1347,1260],{"class":697},[691,1349,1350],{"class":700},"   favicons.githubusercontent.com\n",[691,1352,1354,1356],{"class":693,"line":1353},15,[691,1355,1276],{"class":697},[691,1357,1358],{"class":700},"   avatars5.githubusercontent.com\n",[691,1360,1362,1364],{"class":693,"line":1361},16,[691,1363,1260],{"class":697},[691,1365,1366],{"class":700},"   avatars4.githubusercontent.com\n",[691,1368,1370,1372],{"class":693,"line":1369},17,[691,1371,1260],{"class":697},[691,1373,1374],{"class":700},"   avatars3.githubusercontent.com\n",[691,1376,1378,1381],{"class":693,"line":1377},18,[691,1379,1380],{"class":697},"185.199.109.133",[691,1382,1383],{"class":700},"   avatars2.githubusercontent.com\n",[691,1385,1387,1389],{"class":693,"line":1386},19,[691,1388,1260],{"class":697},[691,1390,1391],{"class":700},"   avatars1.githubusercontent.com\n",[691,1393,1395,1397],{"class":693,"line":1394},20,[691,1396,1260],{"class":697},[691,1398,1399],{"class":700},"   avatars0.githubusercontent.com\n",[691,1401,1403,1405],{"class":693,"line":1402},21,[691,1404,1380],{"class":697},[691,1406,1407],{"class":700},"   avatars.githubusercontent.com\n",[691,1409,1411,1414],{"class":693,"line":1410},22,[691,1412,1413],{"class":697},"140.82.116.9",[691,1415,1416],{"class":700},"      codeload.github.com\n",[691,1418,1420,1423],{"class":693,"line":1419},23,[691,1421,1422],{"class":697},"52.217.135.153",[691,1424,1425],{"class":700},"    github-cloud.s3.amazonaws.com\n",[691,1427,1429,1432],{"class":693,"line":1428},24,[691,1430,1431],{"class":697},"3.5.21.109",[691,1433,1434],{"class":700},"        github-com.s3.amazonaws.com\n",[691,1436,1438,1441],{"class":693,"line":1437},25,[691,1439,1440],{"class":697},"3.5.29.177",[691,1442,1443],{"class":700},"        github-production-release-asset-2e65be.s3.amazonaws.com\n",[691,1445,1447,1450],{"class":693,"line":1446},26,[691,1448,1449],{"class":697},"52.216.63.25",[691,1451,1452],{"class":700},"      github-production-user-asset-6210df.s3.amazonaws.com\n",[691,1454,1456,1459],{"class":693,"line":1455},27,[691,1457,1458],{"class":697},"52.217.223.1",[691,1460,1461],{"class":700},"      github-production-repository-file-5c1aeb.s3.amazonaws.com\n",[691,1463,1465,1468],{"class":693,"line":1464},28,[691,1466,1467],{"class":697},"185.199.110.153",[691,1469,1470],{"class":700},"   githubstatus.com\n",[691,1472,1474,1477],{"class":693,"line":1473},29,[691,1475,1476],{"class":697},"140.82.112.17",[691,1478,1479],{"class":700},"     github.community\n",[691,1481,1483,1485],{"class":693,"line":1482},30,[691,1484,1260],{"class":697},[691,1486,1487],{"class":700},"   media.githubusercontent.com\n",[13,1489,1490],{},"上面具体域名对应的映射ip，可以通过命令行ping的方式获取。",[126,1492,1494],{"id":1493},"_13-工具编辑hosts文件","1.3 工具编辑hosts文件",[13,1496,1497,1498,1501,1502,1504],{},"对于windows系统可以借助第三方工具",[45,1499,1500],{},"WinHostsManager","进行修改",[45,1503,1229],{},"文件。‌ WinHostsManager 是一款功能强大的hosts文件管理工具，主要用于管理和修改hosts文件。‌",[13,1506,1507],{},"WinHostsManager的主要功能包括：",[68,1509,1510,1516,1522,1528,1534,1540,1546,1552],{},[71,1511,1512,1515],{},[74,1513,1514],{},"添加新的host项目‌："," 用户可以轻松添加新的IP地址和域名映射。",[71,1517,1518,1521],{},[74,1519,1520],{},"保存修改‌："," 将新的IP地址和域名直接加载到hosts文件中并保存",[71,1523,1524,1527],{},[74,1525,1526],{},"显示最高映射方案‌："," 提供当前最高的映射方案，方便用户选择。",[71,1529,1530,1533],{},[74,1531,1532],{},"获取最快的主机IP编辑方式‌："," 优化编辑过程，提高编辑效率。",[71,1535,1536,1539],{},[74,1537,1538],{},"支持重启主机‌："," 编辑完成后，支持重启主机以应用更改",[71,1541,135,1542,1545],{},[74,1543,1544],{},"查看端口项目‌："," 在列表上查看打开的端口项目。",[71,1547,135,1548,1551],{},[74,1549,1550],{},"建立过滤‌："," 提供过滤功能，方便管理hosts文件‌。",[71,1553,1554,1557],{},[74,1555,1556],{},"支持禁用ip：","  提供启用和禁用ip和域名映射关系功能。",[13,1559,1560],{},"此外，WinHostsManager还具有以下特点：",[131,1562,1563,1569,1575,1581],{},[71,1564,1565,1568],{},[74,1566,1567],{},"操作简单‌："," 用户无需知道hosts文件的保存位置，即可进行修改。",[71,1570,1571,1574],{},[74,1572,1573],{},"节省时间‌："," 软件会自动将内容写入hosts文件，节省了在C盘上查找hosts文件地址的时间。",[71,1576,1577,1580],{},[74,1578,1579],{},"支持特殊地址访问‌："," 帮助用户访问一些特殊地址。",[71,1582,1583,1586],{},[74,1584,1585],{},"备份和恢复功能‌："," 支持hosts文件的备份和恢复，确保数据安全‌。",[20,1588,1590],{"id":1589},"_2-配置git代理","2 配置GIT代理",[13,1592,1593],{},"通常我们访问GitHub站点都需要本地打开VPN工具才能访问，但即使打开VPN工具，打开了全局代理模式，git拉取或者提交代码依然报443连接错误。在Git中配置代理服务器是为了帮助你通过一个HTTP或HTTPS代理连接到GitHub外部网络资源，根据你的网络环境，你可能需要设置代理来绕过某些限制或提高访问速度，才能让git客户端通过VPN代理渠道访问github，否则git客户端不走VPN代理就会出现连接错误。",[126,1595,1597],{"id":1596},"_21-vpn代理ip和端口","2.1 VPN代理IP和端口",[13,1599,1600,1601,1604,1605],{},"打开本地VPN工具，查看设置页面http(s)代理IP和端口。以海豚湾为例，查看方法如下图：\n",[422,1602],{"alt":505,"src":1603},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250701092746871.webp","\n或者查看电脑本地代理端口，查看方法如下图：\n",[422,1606],{"alt":505,"src":1607},"https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250701092752202.webp",[126,1609,1611],{"id":1610},"_22-git本地代理配置","2.2 GIT本地代理配置",[13,1613,1614],{},[74,1615,1616],{},"1. 全局代理配置",[13,1618,1619],{},"如果你希望对所有Git操作使用同一个代理服务器，你可以通过以下命令格式配置全局代理：",[682,1621,1623],{"className":684,"code":1622,"language":687,"meta":505,"style":505},"# 配置http代理\ngit config --global http.proxy http:\u002F\u002Fproxy_address:port\n# 配置https代理\ngit config --global https.proxy https:\u002F\u002Fproxy_address:port\n",[45,1624,1625,1630,1647,1652],{"__ignoreMap":505},[691,1626,1627],{"class":693,"line":694},[691,1628,1629],{"class":862},"# 配置http代理\n",[691,1631,1632,1635,1638,1641,1644],{"class":693,"line":509},[691,1633,1634],{"class":697},"git",[691,1636,1637],{"class":700}," config",[691,1639,1640],{"class":700}," --global",[691,1642,1643],{"class":700}," http.proxy",[691,1645,1646],{"class":700}," http:\u002F\u002Fproxy_address:port\n",[691,1648,1649],{"class":693,"line":538},[691,1650,1651],{"class":862},"# 配置https代理\n",[691,1653,1654,1656,1658,1660,1663],{"class":693,"line":612},[691,1655,1634],{"class":697},[691,1657,1637],{"class":700},[691,1659,1640],{"class":700},[691,1661,1662],{"class":700}," https.proxy",[691,1664,1665],{"class":700}," https:\u002F\u002Fproxy_address:port\n",[13,1667,747,1668,651,1671,1674],{},[45,1669,1670],{},"proxy_address",[45,1672,1673],{},"port","替换为你的代理服务器的地址和端口。例如：您正在使用127.0.0.1的代理服务器和4780的端口，那么您需要输入以下命令：",[682,1676,1678],{"className":684,"code":1677,"language":687,"meta":505,"style":505},"# 配置http代理\ngit config --global http.proxy http:\u002F\u002F127.0.0.1:4780\n# 配置https代理\ngit config --global https.proxy https:\u002F\u002F127.0.0.1:4780\n",[45,1679,1680,1684,1697,1701],{"__ignoreMap":505},[691,1681,1682],{"class":693,"line":694},[691,1683,1629],{"class":862},[691,1685,1686,1688,1690,1692,1694],{"class":693,"line":509},[691,1687,1634],{"class":697},[691,1689,1637],{"class":700},[691,1691,1640],{"class":700},[691,1693,1643],{"class":700},[691,1695,1696],{"class":700}," http:\u002F\u002F127.0.0.1:4780\n",[691,1698,1699],{"class":693,"line":538},[691,1700,1651],{"class":862},[691,1702,1703,1705,1707,1709,1711],{"class":693,"line":612},[691,1704,1634],{"class":697},[691,1706,1637],{"class":700},[691,1708,1640],{"class":700},[691,1710,1662],{"class":700},[691,1712,1713],{"class":700}," https:\u002F\u002F127.0.0.1:4780\n",[13,1715,1716],{},[74,1717,1718],{},"2. 单个仓库代理配置",[13,1720,1721],{},"如果你只想为特定的Git仓库设置代理，而不是全局，你需要进入到本地具体代码仓库目录下，使用以下命令：",[682,1723,1725],{"className":684,"code":1724,"language":687,"meta":505,"style":505},"git config http.proxy http:\u002F\u002Fproxy_address:port\ngit config https.proxy https:\u002F\u002Fproxy_address:port\n",[45,1726,1727,1737],{"__ignoreMap":505},[691,1728,1729,1731,1733,1735],{"class":693,"line":694},[691,1730,1634],{"class":697},[691,1732,1637],{"class":700},[691,1734,1643],{"class":700},[691,1736,1646],{"class":700},[691,1738,1739,1741,1743,1745],{"class":693,"line":509},[691,1740,1634],{"class":697},[691,1742,1637],{"class":700},[691,1744,1662],{"class":700},[691,1746,1665],{"class":700},[13,1748,1749,1750,651,1752,1754],{},"同样地，替换",[45,1751,1670],{},[45,1753,1673],{},"为你的代理服务器信息。",[13,1756,1757],{},[74,1758,1759],{},"3. 取消代理配置",[13,1761,1762],{},"如果你需要取消之前设置的代理配置，可以使用以下命令：",[682,1764,1766],{"className":684,"code":1765,"language":687,"meta":505,"style":505},"git config --global --unset http.proxy\ngit config --global --unset https.proxy\n",[45,1767,1768,1782],{"__ignoreMap":505},[691,1769,1770,1772,1774,1776,1779],{"class":693,"line":694},[691,1771,1634],{"class":697},[691,1773,1637],{"class":700},[691,1775,1640],{"class":700},[691,1777,1778],{"class":700}," --unset",[691,1780,1781],{"class":700}," http.proxy\n",[691,1783,1784,1786,1788,1790,1792],{"class":693,"line":509},[691,1785,1634],{"class":697},[691,1787,1637],{"class":700},[691,1789,1640],{"class":700},[691,1791,1778],{"class":700},[691,1793,1794],{"class":700}," https.proxy\n",[13,1796,1797],{},"或者针对单个仓库：",[682,1799,1801],{"className":684,"code":1800,"language":687,"meta":505,"style":505},"git config --unset http.proxy\ngit config --unset https.proxy\n",[45,1802,1803,1813],{"__ignoreMap":505},[691,1804,1805,1807,1809,1811],{"class":693,"line":694},[691,1806,1634],{"class":697},[691,1808,1637],{"class":700},[691,1810,1778],{"class":700},[691,1812,1781],{"class":700},[691,1814,1815,1817,1819,1821],{"class":693,"line":509},[691,1816,1634],{"class":697},[691,1818,1637],{"class":700},[691,1820,1778],{"class":700},[691,1822,1794],{"class":700},[13,1824,1825],{},[74,1826,1827],{},"4. 查看代理配置",[13,1829,1830],{},"如果你需要查询当前代理配置，可以使用以下命令：",[682,1832,1834],{"className":684,"code":1833,"language":687,"meta":505,"style":505},"# 查看http代理\ngit config --global --get  http.proxy\n# 查看https代理\ngit config --global --get  https.proxy\n",[45,1835,1836,1841,1855,1860],{"__ignoreMap":505},[691,1837,1838],{"class":693,"line":694},[691,1839,1840],{"class":862},"# 查看http代理\n",[691,1842,1843,1845,1847,1849,1852],{"class":693,"line":509},[691,1844,1634],{"class":697},[691,1846,1637],{"class":700},[691,1848,1640],{"class":700},[691,1850,1851],{"class":700}," --get",[691,1853,1854],{"class":700},"  http.proxy\n",[691,1856,1857],{"class":693,"line":538},[691,1858,1859],{"class":862},"# 查看https代理\n",[691,1861,1862,1864,1866,1868,1870],{"class":693,"line":612},[691,1863,1634],{"class":697},[691,1865,1637],{"class":700},[691,1867,1640],{"class":700},[691,1869,1851],{"class":700},[691,1871,1872],{"class":700},"  https.proxy\n",[13,1874,1797],{},[682,1876,1878],{"className":684,"code":1877,"language":687,"meta":505,"style":505},"# 查看http代理\ngit config  --get  http.proxy\n# 查看https代理\ngit config  --get  https.proxy\n",[45,1879,1880,1884,1895,1899],{"__ignoreMap":505},[691,1881,1882],{"class":693,"line":694},[691,1883,1840],{"class":862},[691,1885,1886,1888,1890,1893],{"class":693,"line":509},[691,1887,1634],{"class":697},[691,1889,1637],{"class":700},[691,1891,1892],{"class":700},"  --get",[691,1894,1854],{"class":700},[691,1896,1897],{"class":693,"line":538},[691,1898,1859],{"class":862},[691,1900,1901,1903,1905,1907],{"class":693,"line":612},[691,1902,1634],{"class":697},[691,1904,1637],{"class":700},[691,1906,1892],{"class":700},[691,1908,1872],{"class":700},[13,1910,1911],{},"如果VPN代理IP和端口发生改变，需要重新配置git代码地址。",[971,1913,1914],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":505,"searchDepth":538,"depth":538,"links":1916},[1917,1922],{"id":1034,"depth":509,"text":1035,"children":1918},[1919,1920,1921],{"id":1044,"depth":538,"text":1045},{"id":1091,"depth":538,"text":1092},{"id":1493,"depth":538,"text":1494},{"id":1589,"depth":509,"text":1590,"children":1923},[1924,1925],{"id":1596,"depth":538,"text":1597},{"id":1610,"depth":538,"text":1611},{"name":1927,"symbol":1928,"icon":1929,"id":908},"GitHub","github","mdi:github","2025-06-29 15:36:09","GitHub对中国大陆IP的访问进行了限制，国内想访问GitHub站点，需要科学上网，才能访问Github站点。有时候就算通过梯子，使用git命令克隆、推送、拉取GitHub仓库的代码也会报443连接超时错误.",{"type":10,"value":1933},[1934],[13,1935,1031],{},"github，git, clone，pull，push，fetch，拉取，推送，提交，GitHub克隆或者拉取推送代码443超时问题解决方法.",{},"\u002Fblog\u002Fgithub443","---\ntitle: GitHub克隆拉取和推送代码时443超时问题解决方法\ndescription: GitHub对中国大陆IP的访问进行了限制，国内想访问GitHub站点，需要科学上网，才能访问Github站点。有时候就算通过梯子，使用git命令克隆、推送、拉取GitHub仓库的代码也会报443连接超时错误.\nkeywords: github，git, clone，pull，push，fetch，拉取，推送，提交，GitHub克隆或者拉取推送代码443超时问题解决方法.\narticleId: 20250629153609\ncreateDate: \"2025-06-29 15:36:09\"\nupdateDate: \"2026-03-12 10:40:16\"\narticleThumb: https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327204841213.webp\ntagIds: \n    - 11\ncategoryId: 11\nisTop: false\nisRecommend: false\nisHot: true\nisHidden: false\nnavigation: true\n---\n\n在国内由于网络原因，在命令窗口能够Ping通github.com域名，但通过git命令操作github仓库代码时，无论是克隆，拉取、推送还是提交，经常会出现fatal: unable to access 'xxx': Failed to connect to github.com port 443: Timed out 禁止访问连接或者github连接超时异常，有时候即使开了梯子也没用，把VPN工具改成全局路由模式也不行。下面记录几种常见解决方法，彻底解决git命令连接github连接超时问题。\n\u003C!--more-->\n\n## 1 修改hosts文件\nHosts文件是系统中用于将网址域名与IP地址进行快速映射的数据库，在用户访问网站时优先被查询。这个没有扩展名的系统文件，虽然不起眼，却扮演着至关重要的角色。它类似于一个关联“数据库”，将众多常用的网址域名与对应的IP地址紧密相连。每当用户在浏览器中输入一个网址并尝试登录时，系统会首先自动在Hosts文件中寻找相应的IP地址。一旦找到，系统会迅速打开对应的网页；若未找到，则会自动将网址提交至DNS域名解析服务器进行IP地址的深入解析。\n\n在解决 GitHub 在提交代码时出现 443 错误的问题时，修改 hosts 文件是一个可能的解决方案。这通常发生在 GitHub 的 IP 地址被错误地解析或者 DNS 解析出现问题的情况下，导致连接超时问题。通过修改hosts文件后，你可以绕过国内的访问限制，当尝试访问github及其相关域名时，系统将优先使用这些映射，从而可能解决网络连通性问题。以下是具体步骤：\n\n### 1.1 查找GitHub的IP地址\n首先，你需要找到 GitHub 的 IP 地址。可以通过运行以下命令来获取 GitHub 的 IP 地址：\n```Bash\nping github.com\n```\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250629165553736.webp)\n\n或者，你可以使用以下命令获取更多 IP 地址：\n```Bash\nnslookup github.com\n```\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F06\u002F20250629165553775.webp)\n\n### 1.2 手动编辑hosts文件\n在不同操作系统中，Hosts文件的位置各有不同，便于管理和编辑。例如，在Windows系统中，它通常位于`C:\\Windows\\System32\\drivers\\etc\\hosts`{color=primary}路径下；而在Android和iOS系统中，它则分别位于`\u002Fetc\u002Fhosts和\u002Fprivate\u002Fetc\u002Fhosts`{color=primary}等路径。对于Mac OS X系统，其位置则可能因版本不同而有所差异。\n\n- **对于Windows系统** \n\n1、**以管理员权限身份**，通过记事本打开`C:\\Windows\\System32\\drivers\\etc\\hosts`{color=primary}文件。  \n2、在文件末尾添加以下行（替换 \u003Cgithub_ip> 为你从 ping 或 nslookup 命令中获取的 IP 地址）:\n ```bash\n  \u003Cgithub_ip> github.com\n ``` \n3、保存修改后的配置文件，并关闭文件。  \n4、为了确保更改生效，你可以清空 DNS 缓存，在终端刷新本地DNS缓存：\n ```bash\nipconfig \u002Fflushdns\n ``` \n- **对于 macOS 或 Linux**\n\n1、打开终端。  \n2、使用文本编辑器打开 \u002Fetc\u002Fhosts 文件，例如使用命令：\n```bash\n sudo vi \u002Fetc\u002Fhosts\n```\n3、在文件末尾添加以下行（同样替换 \u003Cgithub_ip>）：\n```bash\n \u003Cgithub_ip> github.com\n```\n4、保存修改后的配置文件，并关闭文件。  \n5、在 macOS 或 Linux 上，通常不需要手动清空 DNS 缓存，因为系统会自动处理。但如果你怀疑有缓存问题，可以尝试重启你的计算机。\n::callout{icon=\"circum:warning\" color=\"primary\"}\n温馨提示\u003C\u002Fbr>\n1 修改hosts方法可能不太稳定，但至少在一定程度上能够解决问题。如果过一段时间后，发现修改hosts也无法连接，需要重新修改hosts文件中ip和github映射关系。\u003C\u002Fbr>\n2 如果`hosts`文件中加入`\u003Cgithub ip> github.com`后发现还是连接不通，可以尝试加入以下IP地址和域名映射关系：\n```bash\n185.199.108.154   github.githubassets.com\n140.82.113.22     central.github.com\n185.199.108.133   desktop.githubusercontent.com\n185.199.109.153   assets-cdn.github.com\n185.199.110.133   camo.githubusercontent.com\n185.199.108.133   github.map.fastly.net\n151.101.201.194   github.global.ssl.fastly.net\n140.82.116.3      gist.github.com\n185.199.108.153   github.io\n140.82.116.3      github.com\n140.82.116.6      api.github.com\n185.199.111.133   raw.githubusercontent.com\n185.199.108.133   user-images.githubusercontent.com\n185.199.108.133   favicons.githubusercontent.com\n185.199.110.133   avatars5.githubusercontent.com\n185.199.108.133   avatars4.githubusercontent.com\n185.199.108.133   avatars3.githubusercontent.com\n185.199.109.133   avatars2.githubusercontent.com\n185.199.108.133   avatars1.githubusercontent.com\n185.199.108.133   avatars0.githubusercontent.com\n185.199.109.133   avatars.githubusercontent.com\n140.82.116.9      codeload.github.com\n52.217.135.153    github-cloud.s3.amazonaws.com\n3.5.21.109        github-com.s3.amazonaws.com\n3.5.29.177        github-production-release-asset-2e65be.s3.amazonaws.com\n52.216.63.25      github-production-user-asset-6210df.s3.amazonaws.com\n52.217.223.1      github-production-repository-file-5c1aeb.s3.amazonaws.com\n185.199.110.153   githubstatus.com\n140.82.112.17     github.community\n185.199.108.133   media.githubusercontent.com\n```\n上面具体域名对应的映射ip，可以通过命令行ping的方式获取。\n::\n\n### 1.3 工具编辑hosts文件\n\n\n对于windows系统可以借助第三方工具`WinHostsManager`进行修改`hosts`文件。‌ WinHostsManager 是一款功能强大的hosts文件管理工具，主要用于管理和修改hosts文件。‌\n\n\nWinHostsManager的主要功能包括：\n\n\n1. **添加新的host项目‌：** 用户可以轻松添加新的IP地址和域名映射。\n2. **保存修改‌：** 将新的IP地址和域名直接加载到hosts文件中并保存\n3. **显示最高映射方案‌：** 提供当前最高的映射方案，方便用户选择。\n4. **获取最快的主机IP编辑方式‌：** 优化编辑过程，提高编辑效率。\n5. **支持重启主机‌：** 编辑完成后，支持重启主机以应用更改\n6. ‌**查看端口项目‌：** 在列表上查看打开的端口项目。\n7. ‌**建立过滤‌：** 提供过滤功能，方便管理hosts文件‌。\n8. **支持禁用ip：**  提供启用和禁用ip和域名映射关系功能。\n\n\n此外，WinHostsManager还具有以下特点：\n\n\n- **操作简单‌：** 用户无需知道hosts文件的保存位置，即可进行修改。\n- **节省时间‌：** 软件会自动将内容写入hosts文件，节省了在C盘上查找hosts文件地址的时间。\n- **支持特殊地址访问‌：** 帮助用户访问一些特殊地址。\n- **备份和恢复功能‌：** 支持hosts文件的备份和恢复，确保数据安全‌。\n\n## 2 配置GIT代理\n\n\n通常我们访问GitHub站点都需要本地打开VPN工具才能访问，但即使打开VPN工具，打开了全局代理模式，git拉取或者提交代码依然报443连接错误。在Git中配置代理服务器是为了帮助你通过一个HTTP或HTTPS代理连接到GitHub外部网络资源，根据你的网络环境，你可能需要设置代理来绕过某些限制或提高访问速度，才能让git客户端通过VPN代理渠道访问github，否则git客户端不走VPN代理就会出现连接错误。\n\n\n### 2.1 VPN代理IP和端口\n\n\n打开本地VPN工具，查看设置页面http(s)代理IP和端口。以海豚湾为例，查看方法如下图：\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250701092746871.webp)\n或者查看电脑本地代理端口，查看方法如下图：\n![](https:\u002F\u002Fimage.jfork.top\u002F2025\u002F07\u002F20250701092752202.webp)\n\n\n### 2.2 GIT本地代理配置\n**1. 全局代理配置**\n\n\n如果你希望对所有Git操作使用同一个代理服务器，你可以通过以下命令格式配置全局代理：\n```bash\n# 配置http代理\ngit config --global http.proxy http:\u002F\u002Fproxy_address:port\n# 配置https代理\ngit config --global https.proxy https:\u002F\u002Fproxy_address:port\n```\n将`proxy_address`和`port`替换为你的代理服务器的地址和端口。例如：您正在使用127.0.0.1的代理服务器和4780的端口，那么您需要输入以下命令：\n```bash\n# 配置http代理\ngit config --global http.proxy http:\u002F\u002F127.0.0.1:4780\n# 配置https代理\ngit config --global https.proxy https:\u002F\u002F127.0.0.1:4780\n```\n**2. 单个仓库代理配置**\n\n\n如果你只想为特定的Git仓库设置代理，而不是全局，你需要进入到本地具体代码仓库目录下，使用以下命令：\n```bash\ngit config http.proxy http:\u002F\u002Fproxy_address:port\ngit config https.proxy https:\u002F\u002Fproxy_address:port\n```\n同样地，替换`proxy_address`和`port`为你的代理服务器信息。\n\n\n**3. 取消代理配置**\n\n\n如果你需要取消之前设置的代理配置，可以使用以下命令：\n```bash\ngit config --global --unset http.proxy\ngit config --global --unset https.proxy\n```\n或者针对单个仓库：\n```bash\ngit config --unset http.proxy\ngit config --unset https.proxy\n```\n**4. 查看代理配置**\n\n\n如果你需要查询当前代理配置，可以使用以下命令：\n```bash\n# 查看http代理\ngit config --global --get  http.proxy\n# 查看https代理\ngit config --global --get  https.proxy\n```\n或者针对单个仓库：\n```bash\n# 查看http代理\ngit config  --get  http.proxy\n# 查看https代理\ngit config  --get  https.proxy\n```\n如果VPN代理IP和端口发生改变，需要重新配置git代码地址。\n\n\n\n\n\n\n\n",11.1,{"title":1024,"description":1931},{"loc":1938},"blog\u002F6.GitHub克隆拉取和推送代码时443超时问题解决方法",[908],[1946],{"name":1947,"symbol":1634,"icon":1948,"id":908},"Git","material-icon-theme:git","2026-03-12 10:40:16",1996,"vFy9LUFJ-IZZNa1x68MqY4OkE25ZgUNhV_YUVxsQ-6g",{"id":1953,"title":1954,"articleId":1955,"articleThumb":1956,"body":1957,"categoryId":899,"categoryInfo":3002,"createDate":3004,"description":3005,"excerpt":3006,"extension":1003,"isHidden":1004,"isHot":1005,"isRecommend":1005,"isTop":1004,"keywords":3010,"meta":3011,"navigation":1005,"path":3012,"rawbody":3013,"readingTime":866,"seo":3014,"sitemap":3015,"stem":3016,"tagIds":3017,"tagInfo":3018,"updateDate":3022,"wordCount":3023,"__hash__":3024},"blog\u002Fblog\u002F7.Windows和Linux系统上NVM安装多个版本的Node.js.md","Windows和Linux系统上NVM安装多个版本的Node.js","20250616213326","https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327205225806.webp",{"type":10,"value":1958,"toc":2988},[1959,1962,1976,1980,1995,2045,2049,2071,2076,2083,2091,2094,2103,2108,2128,2133,2136,2150,2153,2157,2171,2176,2181,2207,2212,2235,2240,2243,2339,2348,2353,2369,2374,2388,2391,2395,2404,2408,2413,2509,2514,2523,2526,2564,2570,2575,2614,2619,2635,2639,2644,2660,2669,2674,2689,2694,2795,2800,2813,2817,2821,2826,2837,2842,2850,2854,2859,2867,2881,2886,2895,2953,2972,2985],[13,1960,1961],{},"NVM（Node Version Manager）是专为Node.js设计的版本管理工具，用于安装和管理多个不同版本的Node.js，允许在同一台机器上安装、切换和使用多个不同版本的Node.js，适用于开发者处理多个项目需要不同Node版本的需求。本文从Windows和Linux2个不同的操作系统入手，简单记录NVM安装不同Node.js的使用步骤。",[1215,1963,1966],{"color":119,"icon":1964,"target":31,"to":1965},"material-symbols:info-outline","https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm\u002Fblob\u002Fmaster\u002FREADME.md",[13,1967,1968,1969,1972,1973,1975],{},"点击访问",[45,1970,1971],{},"nvm","官网，阅读",[45,1974,1971],{},"使用文档",[20,1977,1979],{"id":1978},"_1-安装nvm软件","1. 安装NVM软件",[13,1981,1982,1983,1988,1989,1991,1992,1994],{},"访问",[107,1984,1987],{"href":1985,"rel":1986},"https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm",[111],"NVM","的源码仓库，可以查看最新版本的",[45,1990,1971],{},"包，在不同的系统上安装",[45,1993,1971],{},"方式存在差异，但基本都可以通过源代码包和第三方快捷方式进行安装。",[1996,1997,1998,2006],"warning",{},[13,1999,2000,2003,2004],{},[74,2001,2002],{},"注意："," ",[293,2005],{},[68,2007,2008,2018],{},[71,2009,2010,2011,2013,2014,2017],{},"无论什么系统，通过",[45,2012,1971],{},"安装node.js之前，都需要卸载现已安装好的",[45,2015,2016],{},"Node.js","，避免发生安装冲突和错误问题。",[71,2019,2020,2021,2024,2025,2027,2028,2031,2032,2034,2035,2037,2038,2041,2042,2044],{},"对于",[45,2022,2023],{},"Linux","系统，不同版本的",[45,2026,2016],{},"对",[45,2029,2030],{},"gcc","版本有要求，安装",[45,2033,2016],{},"对应的",[45,2036,2030],{},"版本，Node.js才能安装成功。建议使用最新版本的",[45,2039,2040],{},"linux","镜像系统(gcc版本比较高，满足高版本Node.js安装需求)，否则需要手动升级系统",[45,2043,2030],{},"版本，非常麻烦。",[126,2046,2048],{"id":2047},"_11-windows安装nvm","1.1 Windows安装NVM",[13,2050,2051,2052,2055,2056,2059,2060,2063,2064,2066,2067,2070],{},"windows系统可以通过",[45,2053,2054],{},"nvm-windows​","进行安装，",[45,2057,2058],{},"nvm-windows","是一个",[45,2061,2062],{},".exe","的安装包，在",[45,2065,1971],{},"源码包的基础上编译成了可执行文件，便于在",[45,2068,2069],{},"Windows","环境下安装。",[13,2072,2073],{},[74,2074,2075],{},"1. 下载nvm-windows",[13,2077,1982,2078,2082],{},[107,2079,2058],{"href":2080,"rel":2081},"https:\u002F\u002Fgithub.com\u002Fcoreybutler\u002Fnvm-windows\u002Freleases",[111],"官方仓库，下载最新版本的安装包。",[131,2084,2085,2088],{},[71,2086,2087],{},"稳定版：nvm-setup.exe",[71,2089,2090],{},"便携版：nvm-noinstall.zip",[13,2092,2093],{},"稳定版是可执行文件，可以直接点击安装，推荐使用稳定版安装。便携版为免安装的文件包，之间解压到磁盘上即可。",[2095,2096,2097],"tip",{},[13,2098,2099,2100,2102],{},"二者区别：稳定版安装后，会自动添加环境变量，软件安装完毕就可以直接使用",[45,2101,1971],{},",便携版需要手动配置环境变量，才能使用。",[13,2104,2105],{},[74,2106,2107],{},"2. 运行安装程序",[68,2109,2110,2113,2119,2125],{},[71,2111,2112],{},"点击运行稳定版，勾选许可协议，下一步.",[71,2114,2115,2116,2118],{},"设置",[45,2117,1971],{},"安装路径，可自定义安装路径 .",[71,2120,2121,2122,2124],{},"设置 ",[45,2123,2016],{}," 的安装路径.",[71,2126,2127],{},"安装完成.",[13,2129,2130],{},[74,2131,2132],{},"3.验证安装",[13,2134,2135],{},"打开新的命令提示符（CMD）或 PowerShell，运行：",[682,2137,2141],{"className":2138,"code":2139,"language":2140,"meta":505,"style":505},"language-shell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nvm -v\n","shell",[45,2142,2143],{"__ignoreMap":505},[691,2144,2145,2147],{"class":693,"line":694},[691,2146,1971],{"class":697},[691,2148,2149],{"class":700}," -v\n",[13,2151,2152],{},"如果显示版本号（如 1.1.9），说明安装成功。",[126,2154,2156],{"id":2155},"_12-linux安装nvm","1.2 Linux安装NVM",[13,2158,2159,2160,2162,2163,2166,2167,2170],{},"Linux系统上安装",[45,2161,1971],{},"，可以通过",[45,2164,2165],{},"nvm-sh","脚本和",[45,2168,2169],{},"源码包","2种方式进行安装。",[13,2172,2173],{},[74,2174,2175],{},"1. 使用脚本安装",[131,2177,2178],{},[71,2179,2180],{},"打开终端，运行以下命令：",[682,2182,2184],{"className":769,"code":2183,"language":772,"meta":505,"style":505},"curl -o- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.3\u002Finstall.sh | bash\n",[45,2185,2186],{"__ignoreMap":505},[691,2187,2188,2191,2194,2197,2199,2202,2204],{"class":693,"line":694},[691,2189,2190],{"class":790},"curl ",[691,2192,2193],{"class":794},"-",[691,2195,2196],{"class":790},"o",[691,2198,2193],{"class":794},[691,2200,2201],{"class":697}," https",[691,2203,804],{"class":794},[691,2205,2206],{"class":862},"\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.3\u002Finstall.sh | bash\n",[131,2208,2209],{},[71,2210,2211],{},"或者使用 wget：",[682,2213,2215],{"className":769,"code":2214,"language":772,"meta":505,"style":505},"wget -qO- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.3\u002Finstall.sh | bash\n",[45,2216,2217],{"__ignoreMap":505},[691,2218,2219,2222,2224,2227,2229,2231,2233],{"class":693,"line":694},[691,2220,2221],{"class":790},"wget ",[691,2223,2193],{"class":794},[691,2225,2226],{"class":790},"qO",[691,2228,2193],{"class":794},[691,2230,2201],{"class":697},[691,2232,804],{"class":794},[691,2234,2206],{"class":862},[13,2236,2237],{},[74,2238,2239],{},"2. 配置环境变量",[13,2241,2242],{},"安装完成后，将以下内容添加到你的 shell 配置文件（ ~\u002F.bashrc、 ~\u002F.zshrc 或 ~\u002F.profile）：",[682,2244,2246],{"className":769,"code":2245,"language":772,"meta":505,"style":505},"export NVM_DIR=\"$HOME\u002F.nvm\"\n[ -s \"$NVM_DIR\u002Fnvm.sh\" ] && \\. \"$NVM_DIR\u002Fnvm.sh\"  # 加载 nvm\n[ -s \"$NVM_DIR\u002Fbash_completion\" ] && \\. \"$NVM_DIR\u002Fbash_completion\"  # 加载自动补全\n",[45,2247,2248,2268,2307],{"__ignoreMap":505},[691,2249,2250,2253,2256,2259,2262,2265],{"class":693,"line":694},[691,2251,780],{"class":2252},"spNyl",[691,2254,2255],{"class":790}," NVM_DIR",[691,2257,2258],{"class":794},"=",[691,2260,2261],{"class":794},"\"",[691,2263,2264],{"class":700},"$HOME\u002F.nvm",[691,2266,2267],{"class":794},"\"\n",[691,2269,2270,2273,2275,2278,2280,2283,2285,2288,2291,2294,2297,2300,2302,2304],{"class":693,"line":509},[691,2271,2272],{"class":790},"[ ",[691,2274,2193],{"class":794},[691,2276,2277],{"class":790},"s ",[691,2279,2261],{"class":794},[691,2281,2282],{"class":700},"$NVM_DIR\u002Fnvm.sh",[691,2284,2261],{"class":794},[691,2286,2287],{"class":790}," ] ",[691,2289,2290],{"class":794},"&&",[691,2292,2293],{"class":790}," \\",[691,2295,2296],{"class":794},".",[691,2298,2299],{"class":794}," \"",[691,2301,2282],{"class":700},[691,2303,2261],{"class":794},[691,2305,2306],{"class":790},"  # 加载 nvm\n",[691,2308,2309,2311,2313,2315,2317,2320,2322,2324,2326,2328,2330,2332,2334,2336],{"class":693,"line":538},[691,2310,2272],{"class":790},[691,2312,2193],{"class":794},[691,2314,2277],{"class":790},[691,2316,2261],{"class":794},[691,2318,2319],{"class":700},"$NVM_DIR\u002Fbash_completion",[691,2321,2261],{"class":794},[691,2323,2287],{"class":790},[691,2325,2290],{"class":794},[691,2327,2293],{"class":790},[691,2329,2296],{"class":794},[691,2331,2299],{"class":794},[691,2333,2319],{"class":700},[691,2335,2261],{"class":794},[691,2337,2338],{"class":790},"  # 加载自动补全\n",[226,2340,2341],{},[13,2342,2343,2344,2347],{},"注意: 通过脚本安装，脚本执行完，默认在",[45,2345,2346],{},"~\u002F.bashrc","中加入了上面的环境变量配置，只需要重新加载环境变量文件即可。",[13,2349,2350],{},[74,2351,2352],{},"3. 重新加载环境变量",[682,2354,2356],{"className":769,"code":2355,"language":772,"meta":505,"style":505},"source ~\u002F.bashrc\n",[45,2357,2358],{"__ignoreMap":505},[691,2359,2360,2363,2366],{"class":693,"line":694},[691,2361,2362],{"class":790},"source ",[691,2364,2365],{"class":794},"~\u002F.",[691,2367,2368],{"class":790},"bashrc\n",[13,2370,2371],{},[74,2372,2373],{},"4. 验证安装",[682,2375,2376],{"className":769,"code":2139,"language":772,"meta":505,"style":505},[45,2377,2378],{"__ignoreMap":505},[691,2379,2380,2383,2385],{"class":693,"line":694},[691,2381,2382],{"class":790},"nvm ",[691,2384,2193],{"class":794},[691,2386,2387],{"class":790},"v\n",[13,2389,2390],{},"如果显示版本号（如：0.40.3)，说明安装成功。",[20,2392,2394],{"id":2393},"_2-nvm管理nodejs","2. Nvm管理Node.js",[13,2396,2397,2398,2400,2401,2403],{},"无论Window系统，还是Linux系统，",[45,2399,1971],{},"安装成功后，安装和管理",[45,2402,2016],{},"的命令基本一致。",[126,2405,2407],{"id":2406},"_21-基本命令","2.1  基本命令",[13,2409,2410],{},[74,2411,2412],{},"1. 安装 Node.js 版本",[682,2414,2416],{"className":769,"code":2415,"language":772,"meta":505,"style":505},"# 安装最新版本的node，\"node\" 是最新版本的别名\nnvm install node \n# 安装最新的 LTS 版本\nnvm install --lts \n# 安装最新 18.x 版本\nnvm install 18 \n# 安装指定版本     \nnvm install 16.14.0  \n# 设置别名为my_alias，别名不能包含空格或者斜杠\nnvm alias my_alias v14.4.0\n",[45,2417,2418,2433,2438,2443,2454,2464,2475,2480,2494,2499],{"__ignoreMap":505},[691,2419,2420,2423,2425,2428,2430],{"class":693,"line":694},[691,2421,2422],{"class":790},"# 安装最新版本的node，",[691,2424,2261],{"class":794},[691,2426,2427],{"class":700},"node",[691,2429,2261],{"class":794},[691,2431,2432],{"class":790}," 是最新版本的别名\n",[691,2434,2435],{"class":693,"line":509},[691,2436,2437],{"class":790},"nvm install node \n",[691,2439,2440],{"class":693,"line":538},[691,2441,2442],{"class":790},"# 安装最新的 LTS 版本\n",[691,2444,2445,2448,2451],{"class":693,"line":612},[691,2446,2447],{"class":790},"nvm install ",[691,2449,2450],{"class":794},"--",[691,2452,2453],{"class":790},"lts \n",[691,2455,2456,2459,2461],{"class":693,"line":627},[691,2457,2458],{"class":790},"# 安装最新 18",[691,2460,2296],{"class":794},[691,2462,2463],{"class":790},"x 版本\n",[691,2465,2466,2468,2472],{"class":693,"line":859},[691,2467,2447],{"class":790},[691,2469,2471],{"class":2470},"sbssI","18",[691,2473,2474],{"class":790}," \n",[691,2476,2477],{"class":693,"line":866},[691,2478,2479],{"class":790},"# 安装指定版本     \n",[691,2481,2482,2484,2487,2489,2492],{"class":693,"line":877},[691,2483,2447],{"class":790},[691,2485,2486],{"class":2470},"16.14",[691,2488,2296],{"class":794},[691,2490,2491],{"class":2470},"0",[691,2493,905],{"class":790},[691,2495,2496],{"class":693,"line":893},[691,2497,2498],{"class":790},"# 设置别名为my_alias，别名不能包含空格或者斜杠\n",[691,2500,2501,2504,2506],{"class":693,"line":899},[691,2502,2503],{"class":790},"nvm alias my_alias v14",[691,2505,2296],{"class":794},[691,2507,2508],{"class":2470},"4.0\n",[13,2510,2511],{},[74,2512,2513],{},"2. 查看已安装版本",[682,2515,2517],{"className":769,"code":2516,"language":772,"meta":505,"style":505},"nvm ls\n",[45,2518,2519],{"__ignoreMap":505},[691,2520,2521],{"class":693,"line":694},[691,2522,2516],{"class":790},[13,2524,2525],{},"显示结果为：",[682,2527,2529],{"className":769,"code":2528,"language":772,"meta":505,"style":505},"    v16.14.0\n    v18.12.1\n->  v20.7.0\n",[45,2530,2531,2541,2551],{"__ignoreMap":505},[691,2532,2533,2536,2538],{"class":693,"line":694},[691,2534,2535],{"class":790},"    v16",[691,2537,2296],{"class":794},[691,2539,2540],{"class":2470},"14.0\n",[691,2542,2543,2546,2548],{"class":693,"line":509},[691,2544,2545],{"class":790},"    v18",[691,2547,2296],{"class":794},[691,2549,2550],{"class":2470},"12.1\n",[691,2552,2553,2556,2559,2561],{"class":693,"line":538},[691,2554,2555],{"class":794},"->",[691,2557,2558],{"class":790},"  v20",[691,2560,2296],{"class":794},[691,2562,2563],{"class":2470},"7.0\n",[13,2565,2566,2567,2569],{},"箭头指向为当前使用的",[45,2568,2016],{},"版本",[13,2571,2572],{},[74,2573,2574],{},"3. 切换Node.js版本",[682,2576,2578],{"className":769,"code":2577,"language":772,"meta":505,"style":505},"# 切换到 18.x\nnvm use 18\n# 切换到指定版本      \nnvm use 16.14.0  \n",[45,2579,2580,2590,2598,2603],{"__ignoreMap":505},[691,2581,2582,2585,2587],{"class":693,"line":694},[691,2583,2584],{"class":790},"# 切换到 18",[691,2586,2296],{"class":794},[691,2588,2589],{"class":790},"x\n",[691,2591,2592,2595],{"class":693,"line":509},[691,2593,2594],{"class":790},"nvm use ",[691,2596,2597],{"class":2470},"18\n",[691,2599,2600],{"class":693,"line":538},[691,2601,2602],{"class":790},"# 切换到指定版本      \n",[691,2604,2605,2607,2609,2611],{"class":693,"line":612},[691,2606,2594],{"class":790},[691,2608,2486],{"class":2470},[691,2610,2296],{"class":794},[691,2612,2613],{"class":2470},"0\n",[13,2615,2616],{},[74,2617,2618],{},"4. 卸载Node.js版本",[682,2620,2622],{"className":769,"code":2621,"language":772,"meta":505,"style":505},"nvm uninstall 16.14.0\n",[45,2623,2624],{"__ignoreMap":505},[691,2625,2626,2629,2631,2633],{"class":693,"line":694},[691,2627,2628],{"class":790},"nvm uninstall ",[691,2630,2486],{"class":2470},[691,2632,2296],{"class":794},[691,2634,2613],{"class":2470},[126,2636,2638],{"id":2637},"_22-高阶用法","2.2 高阶用法",[13,2640,2641],{},[74,2642,2643],{},"1. 设置默认版本",[682,2645,2647],{"className":769,"code":2646,"language":772,"meta":505,"style":505},"nvm alias default 18\n",[45,2648,2649],{"__ignoreMap":505},[691,2650,2651,2654,2657],{"class":693,"line":694},[691,2652,2653],{"class":790},"nvm alias ",[691,2655,2656],{"class":779},"default",[691,2658,2659],{"class":2470}," 18\n",[13,2661,2662,2663,2665,2666,2668],{},"第一个安装的版本会被自动设置为默认版本，新打开的终端",[45,2664,2140],{},"都会使用默认的",[45,2667,2016],{},"版本。",[13,2670,2671],{},[74,2672,2673],{},"2. 查看远程可用版本",[682,2675,2677],{"className":769,"code":2676,"language":772,"meta":505,"style":505},"nvm ls-remote\n",[45,2678,2679],{"__ignoreMap":505},[691,2680,2681,2684,2686],{"class":693,"line":694},[691,2682,2683],{"class":790},"nvm ls",[691,2685,2193],{"class":794},[691,2687,2688],{"class":790},"remote\n",[13,2690,2691],{},[74,2692,2693],{},"3. 临时选择版本，并输出版本号，该命令不会永久切换版本，仅临时运行一次",[682,2695,2697],{"className":769,"code":2696,"language":772,"meta":505,"style":505},"# 临时选择最新node版本，并输出版本号\nnvm run node --version\n# 临时切换到 Node.js 18.12.1 版本，并输出该版本的 Node.js 号\nnvm run 18.12.1 node --version\n# 临时切换到 Node.js 18.12.1 版本，并输出该版本的 Node.js 号\nnvm exec 18.12.1 node --version\n",[45,2698,2699,2704,2714,2740,2758,2778],{"__ignoreMap":505},[691,2700,2701],{"class":693,"line":694},[691,2702,2703],{"class":790},"# 临时选择最新node版本，并输出版本号\n",[691,2705,2706,2709,2711],{"class":693,"line":509},[691,2707,2708],{"class":790},"nvm run node ",[691,2710,2450],{"class":794},[691,2712,2713],{"class":790},"version\n",[691,2715,2716,2719,2721,2724,2727,2729,2732,2735,2737],{"class":693,"line":538},[691,2717,2718],{"class":790},"# 临时切换到 Node",[691,2720,2296],{"class":794},[691,2722,2723],{"class":790},"js ",[691,2725,2726],{"class":2470},"18.12",[691,2728,2296],{"class":794},[691,2730,2731],{"class":2470},"1",[691,2733,2734],{"class":790}," 版本，并输出该版本的 Node",[691,2736,2296],{"class":794},[691,2738,2739],{"class":790},"js 号\n",[691,2741,2742,2745,2747,2749,2751,2754,2756],{"class":693,"line":612},[691,2743,2744],{"class":790},"nvm run ",[691,2746,2726],{"class":2470},[691,2748,2296],{"class":794},[691,2750,2731],{"class":2470},[691,2752,2753],{"class":790}," node ",[691,2755,2450],{"class":794},[691,2757,2713],{"class":790},[691,2759,2760,2762,2764,2766,2768,2770,2772,2774,2776],{"class":693,"line":627},[691,2761,2718],{"class":790},[691,2763,2296],{"class":794},[691,2765,2723],{"class":790},[691,2767,2726],{"class":2470},[691,2769,2296],{"class":794},[691,2771,2731],{"class":2470},[691,2773,2734],{"class":790},[691,2775,2296],{"class":794},[691,2777,2739],{"class":790},[691,2779,2780,2783,2785,2787,2789,2791,2793],{"class":693,"line":859},[691,2781,2782],{"class":790},"nvm exec ",[691,2784,2726],{"class":2470},[691,2786,2296],{"class":794},[691,2788,2731],{"class":2470},[691,2790,2753],{"class":790},[691,2792,2450],{"class":794},[691,2794,2713],{"class":790},[13,2796,2797],{},[74,2798,2799],{},"4. 查看已安装Node.js的安装路径",[682,2801,2803],{"className":769,"code":2802,"language":772,"meta":505,"style":505},"nvm which 12.22\n",[45,2804,2805],{"__ignoreMap":505},[691,2806,2807,2810],{"class":693,"line":694},[691,2808,2809],{"class":790},"nvm which ",[691,2811,2812],{"class":2470},"12.22\n",[20,2814,2816],{"id":2815},"_3-常见问题","3. 常见问题",[126,2818,2820],{"id":2819},"_31-windows-常见问题","3.1. Windows 常见问题",[13,2822,2823],{},[74,2824,2825],{},"1. nvm 命令无效​",[131,2827,2828,2831,2834],{},[71,2829,2830],{},"确保以管理员身份运行命令提示符。",[71,2832,2833],{},"检查环境变量是否设置正确。",[71,2835,2836],{},"关闭终端重新打开或者重启电脑。",[13,2838,2839],{},[74,2840,2841],{},"2. 安装失败",[131,2843,2844,2847],{},[71,2845,2846],{},"安装路径不能有中文和空格。",[71,2848,2849],{},"关闭杀毒软件。",[126,2851,2853],{"id":2852},"_32-linux-常见问题","3.2. Linux 常见问题",[13,2855,2856],{},[74,2857,2858],{},"1. nvm命令找不到",[131,2860,2861,2864],{},[71,2862,2863],{},"nvm环境变量是否配置成功。",[71,2865,2866],{},"环境变量是否重新加载。",[13,2868,2869,2870,2873,2874,2877,2878],{},"运行",[45,2871,2872],{"color":119}," source ~\u002F.bashrc"," 或",[45,2875,2876],{"color":119}," source ~\u002F.zshrc","  或者",[45,2879,2880],{"color":119},"source ~\u002F.profile",[13,2882,2883],{},[74,2884,2885],{},"2. Node.js安装速度慢",[13,2887,2888,2889,2891,2892,2894],{},"在",[45,2890,2023],{},"系统环境变量中配置",[45,2893,2016],{},"阿里云镜像地址",[682,2896,2898],{"className":684,"code":2897,"language":687,"meta":505,"style":505},"# 编辑环境变量文件\nvi ~\u002F.bashrc\n# 最后一行输入\nexport NVM_NODEJS_ORG_MIRROR=https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n# 保存退出\n:wq!\n# 重新加载环境变量\nsource  ~\u002F.bashrc\n",[45,2899,2900,2905,2913,2918,2930,2935,2940,2945],{"__ignoreMap":505},[691,2901,2902],{"class":693,"line":694},[691,2903,2904],{"class":862},"# 编辑环境变量文件\n",[691,2906,2907,2910],{"class":693,"line":509},[691,2908,2909],{"class":697},"vi",[691,2911,2912],{"class":700}," ~\u002F.bashrc\n",[691,2914,2915],{"class":693,"line":538},[691,2916,2917],{"class":862},"# 最后一行输入\n",[691,2919,2920,2922,2925,2927],{"class":693,"line":612},[691,2921,780],{"class":2252},[691,2923,2924],{"class":790}," NVM_NODEJS_ORG_MIRROR",[691,2926,2258],{"class":794},[691,2928,2929],{"class":790},"https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n",[691,2931,2932],{"class":693,"line":627},[691,2933,2934],{"class":862},"# 保存退出\n",[691,2936,2937],{"class":693,"line":859},[691,2938,2939],{"class":697},":wq!\n",[691,2941,2942],{"class":693,"line":866},[691,2943,2944],{"class":862},"# 重新加载环境变量\n",[691,2946,2947,2950],{"class":693,"line":877},[691,2948,2949],{"class":786},"source",[691,2951,2952],{"class":700},"  ~\u002F.bashrc\n",[13,2954,2888,2955,2958,2959,2961,2962,2964,2965,2967,2968,2971],{},[45,2956,2957],{},"windows","系统中配置",[45,2960,1987],{},"下载",[45,2963,2016],{},"使用的阿里云镜像地址，在",[45,2966,1971],{},"安装目录下的",[45,2969,2970],{},"settings.txt","文件中添加以下内容：",[682,2973,2975],{"className":684,"code":2974,"language":687,"meta":505,"style":505},"node_mirror: https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n\n",[45,2976,2977],{"__ignoreMap":505},[691,2978,2979,2982],{"class":693,"line":694},[691,2980,2981],{"class":697},"node_mirror:",[691,2983,2984],{"class":700}," https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n",[971,2986,2987],{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":505,"searchDepth":538,"depth":538,"links":2989},[2990,2994,2998],{"id":1978,"depth":509,"text":1979,"children":2991},[2992,2993],{"id":2047,"depth":538,"text":2048},{"id":2155,"depth":538,"text":2156},{"id":2393,"depth":509,"text":2394,"children":2995},[2996,2997],{"id":2406,"depth":538,"text":2407},{"id":2637,"depth":538,"text":2638},{"id":2815,"depth":509,"text":2816,"children":2999},[3000,3001],{"id":2819,"depth":538,"text":2820},{"id":2852,"depth":538,"text":2853},{"name":2016,"symbol":2427,"icon":3003,"id":899},"material-icon-theme:nodejs-alt","2025-06-16 21:33:26","在Windows和Linux系统上，通过NVM版本管理器安装和管理不同版本的Node.js，易于快速实现不同版本的Nose.js安装和切换，满足不同应用场景的需求，同时也降低运维成本。",{"type":10,"value":3007},[3008],[13,3009,1961],{},"windows,linux,nvm,node.js",{},"\u002Fblog\u002Fwindowslinuxnvmnode.js","---\ntitle: Windows和Linux系统上NVM安装多个版本的Node.js\ndescription: 在Windows和Linux系统上，通过NVM版本管理器安装和管理不同版本的Node.js，易于快速实现不同版本的Nose.js安装和切换，满足不同应用场景的需求，同时也降低运维成本。\nkeywords: windows,linux,nvm,node.js\narticleId: 20250616213326\ncreateDate: \"2025-06-16 21:33:26\"\nupdateDate: \"2026-03-12 10:44:16\"\narticleThumb: https:\u002F\u002Fgcore.jsdelivr.net\u002Fgh\u002FAnyFork\u002FResource\u002Fimages\u002F20260327205225806.webp\ntagIds: \n    - 10\ncategoryId: 10\nisTop: false\nisRecommend: true\nisHot: true\nisHidden: false\nnavigation: true\n---\nNVM（Node Version Manager）是专为Node.js设计的版本管理工具，用于安装和管理多个不同版本的Node.js，允许在同一台机器上安装、切换和使用多个不同版本的Node.js，适用于开发者处理多个项目需要不同Node版本的需求。本文从Windows和Linux2个不同的操作系统入手，简单记录NVM安装不同Node.js的使用步骤。\n\u003C!--more-->\n\n::callout{icon=\"material-symbols:info-outline\" color=\"primary\" to=\"https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm\u002Fblob\u002Fmaster\u002FREADME.md\" target=\"_blank\"}\n点击访问`nvm`官网，阅读`nvm`使用文档\n::\n\n## 1. 安装NVM软件\n访问[NVM](https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm)的源码仓库，可以查看最新版本的`nvm`包，在不同的系统上安装`nvm`方式存在差异，但基本都可以通过源代码包和第三方快捷方式进行安装。\n::warning\n**注意：** \u003C\u002Fbr>\n1. 无论什么系统，通过`nvm`安装node.js之前，都需要卸载现已安装好的`Node.js`，避免发生安装冲突和错误问题。\n2. 对于`Linux`系统，不同版本的`Node.js`对`gcc`版本有要求，安装`Node.js`对应的`gcc`版本，Node.js才能安装成功。建议使用最新版本的`linux`镜像系统(gcc版本比较高，满足高版本Node.js安装需求)，否则需要手动升级系统`gcc`版本，非常麻烦。\n::\n\n### 1.1 Windows安装NVM\nwindows系统可以通过`nvm-windows​`进行安装，`nvm-windows`是一个`.exe`的安装包，在`nvm`源码包的基础上编译成了可执行文件，便于在`Windows`环境下安装。\n\n**1. 下载nvm-windows**\n\n访问[nvm-windows](https:\u002F\u002Fgithub.com\u002Fcoreybutler\u002Fnvm-windows\u002Freleases)官方仓库，下载最新版本的安装包。\n- 稳定版：nvm-setup.exe\n- 便携版：nvm-noinstall.zip\n\n稳定版是可执行文件，可以直接点击安装，推荐使用稳定版安装。便携版为免安装的文件包，之间解压到磁盘上即可。\n::tip\n二者区别：稳定版安装后，会自动添加环境变量，软件安装完毕就可以直接使用`nvm`,便携版需要手动配置环境变量，才能使用。\n::\n**2. 运行安装程序**\n1. 点击运行稳定版，勾选许可协议，下一步.\n2. 设置`nvm`安装路径，可自定义安装路径 .\n3. 设置 `Node.js` 的安装路径.\n4. 安装完成.\n\n**3.验证安装**\n\n打开新的命令提示符（CMD）或 PowerShell，运行：\n```shell\nnvm -v\n```\n如果显示版本号（如 1.1.9），说明安装成功。\n### 1.2 Linux安装NVM\nLinux系统上安装`nvm`，可以通过`nvm-sh`脚本和`源码包`2种方式进行安装。\n\n**1. 使用脚本安装**\n- 打开终端，运行以下命令：\n```ts\ncurl -o- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.3\u002Finstall.sh | bash\n```\n- 或者使用 wget：\n```ts\nwget -qO- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.3\u002Finstall.sh | bash\n```\n**2. 配置环境变量**\n\n安装完成后，将以下内容添加到你的 shell 配置文件（ ~\u002F.bashrc、 ~\u002F.zshrc 或 ~\u002F.profile）：\n```ts\nexport NVM_DIR=\"$HOME\u002F.nvm\"\n[ -s \"$NVM_DIR\u002Fnvm.sh\" ] && \\. \"$NVM_DIR\u002Fnvm.sh\"  # 加载 nvm\n[ -s \"$NVM_DIR\u002Fbash_completion\" ] && \\. \"$NVM_DIR\u002Fbash_completion\"  # 加载自动补全\n```\n::note\n注意: 通过脚本安装，脚本执行完，默认在`~\u002F.bashrc`中加入了上面的环境变量配置，只需要重新加载环境变量文件即可。\n::\n**3. 重新加载环境变量**\n```ts\nsource ~\u002F.bashrc\n```\n**4. 验证安装**\n```ts\nnvm -v\n```\n如果显示版本号（如：0.40.3)，说明安装成功。\n## 2. Nvm管理Node.js\n无论Window系统，还是Linux系统，`nvm`安装成功后，安装和管理`Node.js`的命令基本一致。\n### 2.1  基本命令\n**1. 安装 Node.js 版本**\n```ts\n# 安装最新版本的node，\"node\" 是最新版本的别名\nnvm install node \n# 安装最新的 LTS 版本\nnvm install --lts \n# 安装最新 18.x 版本\nnvm install 18 \n# 安装指定版本     \nnvm install 16.14.0  \n# 设置别名为my_alias，别名不能包含空格或者斜杠\nnvm alias my_alias v14.4.0\n```\n**2. 查看已安装版本**\n```ts\nnvm ls\n```\n显示结果为：\n```ts\n    v16.14.0\n    v18.12.1\n->  v20.7.0\n```\n箭头指向为当前使用的`Node.js`版本\n\n**3. 切换Node.js版本**\n```ts\n# 切换到 18.x\nnvm use 18\n# 切换到指定版本      \nnvm use 16.14.0  \n```\n**4. 卸载Node.js版本**\n```ts\nnvm uninstall 16.14.0\n```\n### 2.2 高阶用法\n\n**1. 设置默认版本**\n```ts\nnvm alias default 18\n```\n第一个安装的版本会被自动设置为默认版本，新打开的终端`shell`都会使用默认的`Node.js`版本。\n\n**2. 查看远程可用版本**\n```ts\nnvm ls-remote\n```\n**3. 临时选择版本，并输出版本号，该命令不会永久切换版本，仅临时运行一次**\n```ts\n# 临时选择最新node版本，并输出版本号\nnvm run node --version\n# 临时切换到 Node.js 18.12.1 版本，并输出该版本的 Node.js 号\nnvm run 18.12.1 node --version\n# 临时切换到 Node.js 18.12.1 版本，并输出该版本的 Node.js 号\nnvm exec 18.12.1 node --version\n```\n**4. 查看已安装Node.js的安装路径**\n```ts\nnvm which 12.22\n```\n## 3. 常见问题\n### 3.1. Windows 常见问题\n**1. nvm 命令无效​**\n- 确保以管理员身份运行命令提示符。\n- 检查环境变量是否设置正确。\n- 关闭终端重新打开或者重启电脑。\n\n\n**2. 安装失败**\n- 安装路径不能有中文和空格。\n- 关闭杀毒软件。\n\n\n### 3.2. Linux 常见问题\n**1. nvm命令找不到**\n- nvm环境变量是否配置成功。\n- 环境变量是否重新加载。\n\n运行` source ~\u002F.bashrc`{color=primary} 或` source ~\u002F.zshrc`{color=primary}  或者`source ~\u002F.profile`{color=primary} \n\n\n**2. Node.js安装速度慢**\n\n\n在`Linux`系统环境变量中配置`Node.js`阿里云镜像地址\n```bash\n# 编辑环境变量文件\nvi ~\u002F.bashrc\n# 最后一行输入\nexport NVM_NODEJS_ORG_MIRROR=https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n# 保存退出\n:wq!\n# 重新加载环境变量\nsource  ~\u002F.bashrc\n```\n在`windows`系统中配置`NVM`下载`Node.js`使用的阿里云镜像地址，在`nvm`安装目录下的`settings.txt`文件中添加以下内容：\n```bash\nnode_mirror: https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Fnode\n\n```",{"title":1954,"description":3005},{"loc":3012},"blog\u002F7.Windows和Linux系统上NVM安装多个版本的Node.js",[899],[3019],{"name":3020,"icon":3021,"symbol":1971,"id":899},"Nvm","arcticons:nvm","2026-03-12 10:44:16",1257,"KivZ3wPVnKHvjcJXrmjpAH26DuVB4mMTNMUJkI7I_vc",1778143539077]