[{"data":1,"prerenderedAt":917},["ShallowReactive",2],{"content-query-jiVTZZ3SBA":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"layout":10,"crumb":11,"summary":12,"group":13,"order":14,"port":15,"updated":16,"cta":17,"related":25,"faq":43,"body":59,"_type":910,"_id":911,"_source":912,"_file":913,"_stem":914,"_extension":915,"sitemap":916},"/localhost/3000","localhost",false,"","localhost:3000 — what runs on port 3000 and how to fix it","localhost:3000 is the default dev port for React, Next.js, Nuxt, Rails and Express. Fix 'refused to connect', free a busy port 3000, and share it publicly.","reference","localhost:3000","React, Next.js, Nuxt, Rails, Express and Grafana.","Web frameworks",1,3000,"2026-10-28",{"eyebrow":18,"title":19,"text":20,"to":21,"label":22,"secondaryTo":23,"secondaryLabel":24},"Webhook Relay Tunnels","Share localhost:3000 with anyone, over HTTPS","relay connect gives your local port a public HTTPS URL that doesn't change when you restart. Use it for client demos, mobile testing or OAuth callbacks. Need to receive webhooks on localhost:3000 instead? relay forward delivers them through the same outbound connection.","/tunnels/","Explore Tunnels","/docs/webhooks/internal/localhost/","Receive webhooks on localhost",[26,29,32,35,38,41],{"title":27,"to":28},"localhost:5173 (Vite)","/localhost/5173/",{"title":30,"to":31},"localhost:8080","/localhost/8080/",{"title":33,"to":34},"127.0.0.1 and the loopback address","/localhost/127-0-0-1/",{"title":36,"to":37},"502 Bad Gateway","/http-errors/502-bad-gateway/",{"title":39,"to":40},"What is a webhook endpoint?","/glossary/webhook-endpoint/",{"title":24,"to":42},"/blog/receive-webhooks-on-localhost/",[44,47,50,53,56],{"q":45,"a":46},"What is localhost:3000?","localhost:3000 is port 3000 on your own machine. It is the default development port for React (Create React App), Next.js, Nuxt, Ruby on Rails and Grafana, and the port most Express and Node.js tutorials use. Opening http://localhost:3000 in a browser connects to whatever process is listening on that port.",{"q":48,"a":49},"Why does localhost:3000 say refused to connect?","Nothing is listening on port 3000. Either the dev server isn't running, it crashed on startup, or it started on a different port (Next.js and Vite pick the next free port if 3000 is busy). Check the terminal where you ran npm run dev for the actual URL and any errors.",{"q":51,"a":52},"How do I kill the process using port 3000?","On macOS or Linux run lsof -i :3000 to find the PID, then kill it with kill -9 PID, or do both at once with kill -9 $(lsof -ti :3000). On Windows run netstat -ano | findstr :3000 to get the PID, then taskkill /PID \u003Cpid> /F.",{"q":54,"a":55},"How do I open localhost:3000 from my phone or another computer?","Make the dev server listen on all interfaces (for example next dev -H 0.0.0.0 or HOST=0.0.0.0 npm start), then open http://YOUR-LAN-IP:3000 from a device on the same Wi-Fi. To reach it from outside your network, use a tunnel such as relay connect, which gives the port a public HTTPS URL.",{"q":57,"a":58},"How do I change the port from 3000?","Set the PORT environment variable (PORT=3001 npm start for Create React App and Express apps that read process.env.PORT), or pass a flag: next dev -p 3001, nuxt dev --port 3001, rails server -p 3001.",{"type":60,"children":61,"toc":903},"root",[62,106,113,328,357,363,490,496,507,598,631,664,670,694,765,771,776,811,832,852,885,897],{"type":63,"tag":64,"props":65,"children":66},"element","p",{},[67,80,82,88,90,96,98,104],{"type":63,"tag":68,"props":69,"children":70},"strong",{},[71,78],{"type":63,"tag":72,"props":73,"children":75},"code",{"className":74},[],[76],{"type":77,"value":11},"text",{"type":77,"value":79}," is port 3000 on your own computer, and it's the default development port for React, Next.js, Nuxt, Ruby on Rails and Grafana.",{"type":77,"value":81}," When you open ",{"type":63,"tag":72,"props":83,"children":85},{"className":84},[],[86],{"type":77,"value":87},"http://localhost:3000",{"type":77,"value":89},", the browser connects to whatever process on this machine is listening on port 3000. If you see ",{"type":63,"tag":91,"props":92,"children":93},"em",{},[94],{"type":77,"value":95},"\"This site can't be reached\"",{"type":77,"value":97}," or ",{"type":63,"tag":72,"props":99,"children":101},{"className":100},[],[102],{"type":77,"value":103},"ERR_CONNECTION_REFUSED",{"type":77,"value":105},", nothing is listening there right now.",{"type":63,"tag":107,"props":108,"children":110},"h2",{"id":109},"what-runs-on-port-3000",[111],{"type":77,"value":112},"What runs on port 3000",{"type":63,"tag":114,"props":115,"children":116},"table",{},[117,141],{"type":63,"tag":118,"props":119,"children":120},"thead",{},[121],{"type":63,"tag":122,"props":123,"children":124},"tr",{},[125,131,136],{"type":63,"tag":126,"props":127,"children":128},"th",{},[129],{"type":77,"value":130},"Tool",{"type":63,"tag":126,"props":132,"children":133},{},[134],{"type":77,"value":135},"Default on 3000?",{"type":63,"tag":126,"props":137,"children":138},{},[139],{"type":77,"value":140},"Start command",{"type":63,"tag":142,"props":143,"children":144},"tbody",{},[145,178,199,227,248,278,307],{"type":63,"tag":122,"props":146,"children":147},{},[148,154,159],{"type":63,"tag":149,"props":150,"children":151},"td",{},[152],{"type":77,"value":153},"Next.js",{"type":63,"tag":149,"props":155,"children":156},{},[157],{"type":77,"value":158},"Yes",{"type":63,"tag":149,"props":160,"children":161},{},[162,168,170,176],{"type":63,"tag":72,"props":163,"children":165},{"className":164},[],[166],{"type":77,"value":167},"npm run dev",{"type":77,"value":169}," (",{"type":63,"tag":72,"props":171,"children":173},{"className":172},[],[174],{"type":77,"value":175},"next dev",{"type":77,"value":177},")",{"type":63,"tag":122,"props":179,"children":180},{},[181,186,190],{"type":63,"tag":149,"props":182,"children":183},{},[184],{"type":77,"value":185},"React (Create React App)",{"type":63,"tag":149,"props":187,"children":188},{},[189],{"type":77,"value":158},{"type":63,"tag":149,"props":191,"children":192},{},[193],{"type":63,"tag":72,"props":194,"children":196},{"className":195},[],[197],{"type":77,"value":198},"npm start",{"type":63,"tag":122,"props":200,"children":201},{},[202,207,211],{"type":63,"tag":149,"props":203,"children":204},{},[205],{"type":77,"value":206},"Nuxt",{"type":63,"tag":149,"props":208,"children":209},{},[210],{"type":77,"value":158},{"type":63,"tag":149,"props":212,"children":213},{},[214,219,220,226],{"type":63,"tag":72,"props":215,"children":217},{"className":216},[],[218],{"type":77,"value":167},{"type":77,"value":169},{"type":63,"tag":72,"props":221,"children":223},{"className":222},[],[224],{"type":77,"value":225},"nuxt dev",{"type":77,"value":177},{"type":63,"tag":122,"props":228,"children":229},{},[230,235,239],{"type":63,"tag":149,"props":231,"children":232},{},[233],{"type":77,"value":234},"Ruby on Rails",{"type":63,"tag":149,"props":236,"children":237},{},[238],{"type":77,"value":158},{"type":63,"tag":149,"props":240,"children":241},{},[242],{"type":63,"tag":72,"props":243,"children":245},{"className":244},[],[246],{"type":77,"value":247},"bin/rails server",{"type":63,"tag":122,"props":249,"children":250},{},[251,256,261],{"type":63,"tag":149,"props":252,"children":253},{},[254],{"type":77,"value":255},"Express / Node.js",{"type":63,"tag":149,"props":257,"children":258},{},[259],{"type":77,"value":260},"By convention",{"type":63,"tag":149,"props":262,"children":263},{},[264,270,271,277],{"type":63,"tag":72,"props":265,"children":267},{"className":266},[],[268],{"type":77,"value":269},"node server.js",{"type":77,"value":169},{"type":63,"tag":72,"props":272,"children":274},{"className":273},[],[275],{"type":77,"value":276},"app.listen(3000)",{"type":77,"value":177},{"type":63,"tag":122,"props":279,"children":280},{},[281,286,290],{"type":63,"tag":149,"props":282,"children":283},{},[284],{"type":77,"value":285},"Grafana",{"type":63,"tag":149,"props":287,"children":288},{},[289],{"type":77,"value":158},{"type":63,"tag":149,"props":291,"children":292},{},[293,299,301],{"type":63,"tag":72,"props":294,"children":296},{"className":295},[],[297],{"type":77,"value":298},"grafana server",{"type":77,"value":300}," or Docker ",{"type":63,"tag":72,"props":302,"children":304},{"className":303},[],[305],{"type":77,"value":306},"-p 3000:3000",{"type":63,"tag":122,"props":308,"children":309},{},[310,315,319],{"type":63,"tag":149,"props":311,"children":312},{},[313],{"type":77,"value":314},"Gitea",{"type":63,"tag":149,"props":316,"children":317},{},[318],{"type":77,"value":158},{"type":63,"tag":149,"props":320,"children":321},{},[322],{"type":63,"tag":72,"props":323,"children":325},{"className":324},[],[326],{"type":77,"value":327},"gitea web",{"type":63,"tag":64,"props":329,"children":330},{},[331,333,343,345,355],{"type":77,"value":332},"Vite-based React and Vue projects use ",{"type":63,"tag":334,"props":335,"children":336},"a",{"href":28},[337],{"type":63,"tag":72,"props":338,"children":340},{"className":339},[],[341],{"type":77,"value":342},"localhost:5173",{"type":77,"value":344}," instead, and Angular uses ",{"type":63,"tag":334,"props":346,"children":348},{"href":347},"/localhost/4200/",[349],{"type":63,"tag":72,"props":350,"children":352},{"className":351},[],[353],{"type":77,"value":354},"localhost:4200",{"type":77,"value":356},".",{"type":63,"tag":107,"props":358,"children":360},{"id":359},"fix-localhost3000-refused-to-connect",[361],{"type":77,"value":362},"Fix \"localhost:3000 refused to connect\"",{"type":63,"tag":364,"props":365,"children":366},"ol",{},[367,385,419,465],{"type":63,"tag":368,"props":369,"children":370},"li",{},[371,376,378,383],{"type":63,"tag":68,"props":372,"children":373},{},[374],{"type":77,"value":375},"Check the server is actually running.",{"type":77,"value":377}," Look at the terminal where you ran ",{"type":63,"tag":72,"props":379,"children":381},{"className":380},[],[382],{"type":77,"value":167},{"type":77,"value":384},". If the process exited, the error above the prompt tells you why: a missing dependency, a syntax error or a bad env var.",{"type":63,"tag":368,"props":386,"children":387},{},[388,393,395,401,403,409,411,417],{"type":63,"tag":68,"props":389,"children":390},{},[391],{"type":77,"value":392},"Check the port it really chose.",{"type":77,"value":394}," If 3000 was busy, Next.js and many other dev servers silently move to ",{"type":63,"tag":72,"props":396,"children":398},{"className":397},[],[399],{"type":77,"value":400},"3001",{"type":77,"value":402},", ",{"type":63,"tag":72,"props":404,"children":406},{"className":405},[],[407],{"type":77,"value":408},"3002",{"type":77,"value":410}," and so on. The terminal prints the real URL (",{"type":63,"tag":72,"props":412,"children":414},{"className":413},[],[415],{"type":77,"value":416},"Local: http://localhost:3001",{"type":77,"value":418},").",{"type":63,"tag":368,"props":420,"children":421},{},[422,441,443,449,451,457,458,464],{"type":63,"tag":68,"props":423,"children":424},{},[425,427,433,435,440],{"type":77,"value":426},"Try ",{"type":63,"tag":72,"props":428,"children":430},{"className":429},[],[431],{"type":77,"value":432},"127.0.0.1",{"type":77,"value":434}," instead of ",{"type":63,"tag":72,"props":436,"children":438},{"className":437},[],[439],{"type":77,"value":5},{"type":77,"value":356},{"type":77,"value":442}," Some Node versions bind only to IPv6 ",{"type":63,"tag":72,"props":444,"children":446},{"className":445},[],[447],{"type":77,"value":448},"::1",{"type":77,"value":450},", or only to IPv4. If one name works and the other doesn't, start the server with an explicit host (",{"type":63,"tag":72,"props":452,"children":454},{"className":453},[],[455],{"type":77,"value":456},"--host 127.0.0.1",{"type":77,"value":97},{"type":63,"tag":72,"props":459,"children":461},{"className":460},[],[462],{"type":77,"value":463},"HOST=0.0.0.0",{"type":77,"value":418},{"type":63,"tag":368,"props":466,"children":467},{},[468,473,475,481,483,488],{"type":63,"tag":68,"props":469,"children":470},{},[471],{"type":77,"value":472},"Inside Docker?",{"type":77,"value":474}," The app must listen on ",{"type":63,"tag":72,"props":476,"children":478},{"className":477},[],[479],{"type":77,"value":480},"0.0.0.0",{"type":77,"value":482}," inside the container, and you need ",{"type":63,"tag":72,"props":484,"children":486},{"className":485},[],[487],{"type":77,"value":306},{"type":77,"value":489}," to publish the port to your host.",{"type":63,"tag":107,"props":491,"children":493},{"id":492},"find-and-free-a-busy-port-3000",[494],{"type":77,"value":495},"Find and free a busy port 3000",{"type":63,"tag":64,"props":497,"children":498},{},[499,505],{"type":63,"tag":72,"props":500,"children":502},{"className":501},[],[503],{"type":77,"value":504},"Error: listen EADDRINUSE: address already in use :::3000",{"type":77,"value":506}," means another process already owns the port.",{"type":63,"tag":508,"props":509,"children":513},"pre",{"className":510,"code":511,"language":512,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","# macOS / Linux: who is on port 3000?\nlsof -i :3000\n# kill it\nkill -9 $(lsof -ti :3000)\n","bash",[514],{"type":63,"tag":72,"props":515,"children":516},{"__ignoreMap":7},[517,528,550,559],{"type":63,"tag":518,"props":519,"children":521},"span",{"class":520,"line":14},"line",[522],{"type":63,"tag":518,"props":523,"children":525},{"style":524},"--shiki-default:#6A737D",[526],{"type":77,"value":527},"# macOS / Linux: who is on port 3000?\n",{"type":63,"tag":518,"props":529,"children":531},{"class":520,"line":530},2,[532,538,544],{"type":63,"tag":518,"props":533,"children":535},{"style":534},"--shiki-default:#B392F0",[536],{"type":77,"value":537},"lsof",{"type":63,"tag":518,"props":539,"children":541},{"style":540},"--shiki-default:#79B8FF",[542],{"type":77,"value":543}," -i",{"type":63,"tag":518,"props":545,"children":547},{"style":546},"--shiki-default:#9ECBFF",[548],{"type":77,"value":549}," :3000\n",{"type":63,"tag":518,"props":551,"children":553},{"class":520,"line":552},3,[554],{"type":63,"tag":518,"props":555,"children":556},{"style":524},[557],{"type":77,"value":558},"# kill it\n",{"type":63,"tag":518,"props":560,"children":562},{"class":520,"line":561},4,[563,568,573,579,583,588,593],{"type":63,"tag":518,"props":564,"children":565},{"style":540},[566],{"type":77,"value":567},"kill",{"type":63,"tag":518,"props":569,"children":570},{"style":540},[571],{"type":77,"value":572}," -9",{"type":63,"tag":518,"props":574,"children":576},{"style":575},"--shiki-default:#E1E4E8",[577],{"type":77,"value":578}," $(",{"type":63,"tag":518,"props":580,"children":581},{"style":534},[582],{"type":77,"value":537},{"type":63,"tag":518,"props":584,"children":585},{"style":540},[586],{"type":77,"value":587}," -ti",{"type":63,"tag":518,"props":589,"children":590},{"style":546},[591],{"type":77,"value":592}," :3000",{"type":63,"tag":518,"props":594,"children":595},{"style":575},[596],{"type":77,"value":597},")\n",{"type":63,"tag":508,"props":599,"children":603},{"className":600,"code":601,"language":602,"meta":7,"style":7},"language-powershell shiki shiki-themes github-dark","# Windows\nnetstat -ano | findstr :3000\ntaskkill /PID \u003Cpid> /F\n","powershell",[604],{"type":63,"tag":72,"props":605,"children":606},{"__ignoreMap":7},[607,615,623],{"type":63,"tag":518,"props":608,"children":609},{"class":520,"line":14},[610],{"type":63,"tag":518,"props":611,"children":612},{},[613],{"type":77,"value":614},"# Windows\n",{"type":63,"tag":518,"props":616,"children":617},{"class":520,"line":530},[618],{"type":63,"tag":518,"props":619,"children":620},{},[621],{"type":77,"value":622},"netstat -ano | findstr :3000\n",{"type":63,"tag":518,"props":624,"children":625},{"class":520,"line":552},[626],{"type":63,"tag":518,"props":627,"children":628},{},[629],{"type":77,"value":630},"taskkill /PID \u003Cpid> /F\n",{"type":63,"tag":64,"props":632,"children":633},{},[634,636,642,643,649,650,656,657,663],{"type":77,"value":635},"Or leave the old process running and move the new one: ",{"type":63,"tag":72,"props":637,"children":639},{"className":638},[],[640],{"type":77,"value":641},"PORT=3001 npm start",{"type":77,"value":402},{"type":63,"tag":72,"props":644,"children":646},{"className":645},[],[647],{"type":77,"value":648},"next dev -p 3001",{"type":77,"value":402},{"type":63,"tag":72,"props":651,"children":653},{"className":652},[],[654],{"type":77,"value":655},"nuxt dev --port 3001",{"type":77,"value":402},{"type":63,"tag":72,"props":658,"children":660},{"className":659},[],[661],{"type":77,"value":662},"rails server -p 3001",{"type":77,"value":356},{"type":63,"tag":107,"props":665,"children":667},{"id":666},"open-localhost3000-from-another-device",[668],{"type":77,"value":669},"Open localhost:3000 from another device",{"type":63,"tag":64,"props":671,"children":672},{},[673,678,680,685,687,692],{"type":63,"tag":72,"props":674,"children":676},{"className":675},[],[677],{"type":77,"value":5},{"type":77,"value":679}," only ever points at the machine you're typing on, so your phone can't open ",{"type":63,"tag":91,"props":681,"children":682},{},[683],{"type":77,"value":684},"your",{"type":77,"value":686}," ",{"type":63,"tag":72,"props":688,"children":690},{"className":689},[],[691],{"type":77,"value":11},{"type":77,"value":693},". On the same network:",{"type":63,"tag":364,"props":695,"children":696},{},[697,723,752],{"type":63,"tag":368,"props":698,"children":699},{},[700,702,708,709,715,716,722],{"type":77,"value":701},"Start the server on all interfaces: ",{"type":63,"tag":72,"props":703,"children":705},{"className":704},[],[706],{"type":77,"value":707},"next dev -H 0.0.0.0",{"type":77,"value":402},{"type":63,"tag":72,"props":710,"children":712},{"className":711},[],[713],{"type":77,"value":714},"HOST=0.0.0.0 npm start",{"type":77,"value":97},{"type":63,"tag":72,"props":717,"children":719},{"className":718},[],[720],{"type":77,"value":721},"rails server -b 0.0.0.0",{"type":77,"value":356},{"type":63,"tag":368,"props":724,"children":725},{},[726,728,734,736,742,744,750],{"type":77,"value":727},"Find your LAN IP (",{"type":63,"tag":72,"props":729,"children":731},{"className":730},[],[732],{"type":77,"value":733},"ipconfig getifaddr en0",{"type":77,"value":735}," on macOS, ",{"type":63,"tag":72,"props":737,"children":739},{"className":738},[],[740],{"type":77,"value":741},"hostname -I",{"type":77,"value":743}," on Linux, ",{"type":63,"tag":72,"props":745,"children":747},{"className":746},[],[748],{"type":77,"value":749},"ipconfig",{"type":77,"value":751}," on Windows).",{"type":63,"tag":368,"props":753,"children":754},{},[755,757,763],{"type":77,"value":756},"Open ",{"type":63,"tag":72,"props":758,"children":760},{"className":759},[],[761],{"type":77,"value":762},"http://192.168.x.x:3000",{"type":77,"value":764}," on the other device. Allow the port through your OS firewall if it's blocked.",{"type":63,"tag":107,"props":766,"children":768},{"id":767},"share-localhost3000-publicly",[769],{"type":77,"value":770},"Share localhost:3000 publicly",{"type":63,"tag":64,"props":772,"children":773},{},[774],{"type":77,"value":775},"To let a client, a teammate or a mobile device on another network see the app, put a tunnel in front of the port. A tunnel needs no router changes or public IP:",{"type":63,"tag":508,"props":777,"children":779},{"className":510,"code":778,"language":512,"meta":7,"style":7},"relay connect --name my-app http://localhost:3000\n",[780],{"type":63,"tag":72,"props":781,"children":782},{"__ignoreMap":7},[783],{"type":63,"tag":518,"props":784,"children":785},{"class":520,"line":14},[786,791,796,801,806],{"type":63,"tag":518,"props":787,"children":788},{"style":534},[789],{"type":77,"value":790},"relay",{"type":63,"tag":518,"props":792,"children":793},{"style":546},[794],{"type":77,"value":795}," connect",{"type":63,"tag":518,"props":797,"children":798},{"style":540},[799],{"type":77,"value":800}," --name",{"type":63,"tag":518,"props":802,"children":803},{"style":546},[804],{"type":77,"value":805}," my-app",{"type":63,"tag":518,"props":807,"children":808},{"style":546},[809],{"type":77,"value":810}," http://localhost:3000\n",{"type":63,"tag":64,"props":812,"children":813},{},[814,816,822,824,830],{"type":77,"value":815},"The ",{"type":63,"tag":334,"props":817,"children":819},{"href":818},"/docs/installation/cli/",[820],{"type":77,"value":821},"relay CLI",{"type":77,"value":823}," opens an outbound connection and prints a public HTTPS URL that forwards to port 3000. Keep the same ",{"type":63,"tag":72,"props":825,"children":827},{"className":826},[],[828],{"type":77,"value":829},"--name",{"type":77,"value":831}," and the URL stays the same across restarts, which matters for OAuth redirect URIs and anything else you've configured with that URL.",{"type":63,"tag":64,"props":833,"children":834},{},[835,837,842,844,850],{"type":77,"value":836},"If you need ",{"type":63,"tag":68,"props":838,"children":839},{},[840],{"type":77,"value":841},"webhooks",{"type":77,"value":843}," (Stripe, GitHub, Shopify) to reach a handler on port 3000, use ",{"type":63,"tag":72,"props":845,"children":847},{"className":846},[],[848],{"type":77,"value":849},"relay forward",{"type":77,"value":851}," instead:",{"type":63,"tag":508,"props":853,"children":855},{"className":510,"code":854,"language":512,"meta":7,"style":7},"relay forward --bucket my-app http://localhost:3000/webhooks\n",[856],{"type":63,"tag":72,"props":857,"children":858},{"__ignoreMap":7},[859],{"type":63,"tag":518,"props":860,"children":861},{"class":520,"line":14},[862,866,871,876,880],{"type":63,"tag":518,"props":863,"children":864},{"style":534},[865],{"type":77,"value":790},{"type":63,"tag":518,"props":867,"children":868},{"style":546},[869],{"type":77,"value":870}," forward",{"type":63,"tag":518,"props":872,"children":873},{"style":540},[874],{"type":77,"value":875}," --bucket",{"type":63,"tag":518,"props":877,"children":878},{"style":546},[879],{"type":77,"value":805},{"type":63,"tag":518,"props":881,"children":882},{"style":546},[883],{"type":77,"value":884}," http://localhost:3000/webhooks\n",{"type":63,"tag":64,"props":886,"children":887},{},[888,890,895],{"type":77,"value":889},"Every webhook sent to the bucket's public URL is delivered to your local handler and logged, so you can inspect it and replay it. See ",{"type":63,"tag":334,"props":891,"children":892},{"href":23},[893],{"type":77,"value":894},"receive webhooks on localhost",{"type":77,"value":896}," for the full setup.",{"type":63,"tag":898,"props":899,"children":900},"style",{},[901],{"type":77,"value":902},"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);}",{"title":7,"searchDepth":552,"depth":552,"links":904},[905,906,907,908,909],{"id":109,"depth":530,"text":112},{"id":359,"depth":530,"text":362},{"id":492,"depth":530,"text":495},{"id":666,"depth":530,"text":669},{"id":767,"depth":530,"text":770},"markdown","content:localhost:3000.md","content","localhost/3000.md","localhost/3000","md",{"loc":4},1793199808680]