{"id":32397,"date":"2025-10-21T07:41:00","date_gmt":"2025-10-21T04:41:00","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32397"},"modified":"2025-10-21T07:41:00","modified_gmt":"2025-10-21T04:41:00","slug":"node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/","title":{"rendered":"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi"},"content":{"rendered":"<h2>Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi<\/h2>\n<p><body><\/p>\n<h3>Giri\u015f: Neden Hata Ay\u0131klama \u00d6nemli?<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirme s\u00fcreci, kod yazmaktan \u00e7ok daha fazlas\u0131n\u0131 i\u00e7erir. Kodun do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak, beklenmedik davran\u0131\u015flar\u0131 tespit etmek ve sorunlar\u0131 gidermek, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn ayr\u0131lmaz bir par\u00e7as\u0131d\u0131r. Bu noktada &#8220;hata ay\u0131klama&#8221; (debugging) devreye girer. Hata ay\u0131klama, bir yaz\u0131l\u0131m uygulamas\u0131ndaki hatalar\u0131 (bug) bulma ve d\u00fczeltme s\u00fcrecidir. Etkili bir hata ay\u0131klama stratejisi, geli\u015ftiricilerin zaman\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde k\u0131salt\u0131r, kod kalitesini art\u0131r\u0131r ve daha sa\u011flam uygulamalar olu\u015fturmalar\u0131na olanak tan\u0131r.<\/p>\n<p>Node.js, sunucu taraf\u0131 JavaScript \u00e7al\u0131\u015ft\u0131rma ortam\u0131 olarak h\u0131zla pop\u00fclerlik kazanm\u0131\u015ft\u0131r. Asenkron yap\u0131s\u0131, olay odakl\u0131 mimarisi ve geni\u015f mod\u00fcl ekosistemi sayesinde modern web uygulamalar\u0131n\u0131n belkemi\u011fini olu\u015fturur. Ancak bu dinamik yap\u0131, hata ay\u0131klama s\u00fcre\u00e7lerini bazen karma\u015f\u0131k hale getirebilir. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalarda, asenkron i\u015flemlerin izini s\u00fcrmek veya veri ak\u0131\u015f\u0131ndaki beklenmedik de\u011fi\u015fiklikleri tespit etmek zorlay\u0131c\u0131 olabilir.<\/p>\n<p>Visual Studio Code (VS Code), Node.js geli\u015ftiricileri i\u00e7in en pop\u00fcler ve g\u00fc\u00e7l\u00fc IDE&#8217;lerden (Entegre Geli\u015ftirme Ortam\u0131) biridir. Microsoft taraf\u0131ndan geli\u015ftirilen bu hafif ancak zengin \u00f6zellikli kod d\u00fczenleyici, Node.js i\u00e7in yerle\u015fik hata ay\u0131klama deste\u011fi sunar. Bu entegrasyon, geli\u015ftiricilerin kodlar\u0131n\u0131 do\u011frudan IDE i\u00e7inden ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131rmalar\u0131na, de\u011fi\u015fken de\u011ferlerini incelemelerine ve program\u0131n y\u00fcr\u00fctme ak\u0131\u015f\u0131n\u0131 kontrol etmelerine olanak tan\u0131r. Bu makale, Node.js kodunu Visual Studio Code kullanarak nas\u0131l etkili bir \u015fekilde hata ay\u0131klayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h3>Visual Studio Code ve Node.js Entegrasyonu<\/h3>\n<p>Visual Studio Code, Node.js ve JavaScript\/TypeScript geli\u015ftirme i\u00e7in ola\u011fan\u00fcst\u00fc bir deneyim sunar. Bunun temel nedeni, VS Code&#8217;un do\u011frudan Google Chrome&#8217;un V8 JavaScript motorunun hata ay\u0131klama protokol\u00fc ile ileti\u015fim kurabilmesidir. Node.js de V8 motorunu kulland\u0131\u011f\u0131 i\u00e7in, VS Code bu sayede Node.js uygulamalar\u0131 \u00fczerinde do\u011fal ve g\u00fc\u00e7l\u00fc bir hata ay\u0131klama yetene\u011fi kazan\u0131r.<\/p>\n<p>Bu entegrasyonun sundu\u011fu ba\u015fl\u0131ca avantajlar \u015funlard\u0131r:<\/p>\n<p>*   <strong>Yerle\u015fik Destek:<\/strong> Herhangi bir ek uzant\u0131ya ihtiya\u00e7 duymadan Node.js kodunuzu hata ay\u0131klayabilirsiniz.<br \/>\n*   <strong>Zengin Aray\u00fcz:<\/strong> Kesme noktalar\u0131, de\u011fi\u015fken izleme, \u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131, hata ay\u0131klama konsolu gibi t\u00fcm standart hata ay\u0131klama ara\u00e7lar\u0131na kolayca eri\u015fim.<br \/>\n*   <strong>Geli\u015fmi\u015f \u00d6zellikler:<\/strong> Ko\u015fullu kesme noktalar\u0131, log noktalar\u0131, \u00e7oklu s\u00fcre\u00e7 hata ay\u0131klama gibi geli\u015fmi\u015f yetenekler.<br \/>\n*   <strong>H\u0131zl\u0131 Geri Bildirim:<\/strong> Kodunuzda de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda, genellikle h\u0131zl\u0131 bir yeniden ba\u015flatma ile hata ay\u0131klama oturumunu g\u00fcncelleyebilirsiniz.<br \/>\n*   <strong>TypeScript Deste\u011fi:<\/strong> TypeScript ile geli\u015ftirme yap\u0131yorsan\u0131z, kaynak haritalar (source maps) sayesinde d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f JavaScript yerine do\u011frudan TypeScript kodunuz \u00fczerinde hata ay\u0131klama yapabilirsiniz.<\/p>\n<p>Bu yetenekler, VS Code&#8217;u Node.js geli\u015ftiricileri i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline getirir.<\/p>\n<h3>Temel Hata Ay\u0131klama Konseptleri<\/h3>\n<p>Etkili bir hata ay\u0131klay\u0131c\u0131 kullanabilmek i\u00e7in baz\u0131 temel konseptleri anlamak \u00f6nemlidir:<\/p>\n<p>*   <strong>Kesme Noktas\u0131 (Breakpoint):<\/strong> Kodun belirli bir sat\u0131r\u0131nda program y\u00fcr\u00fctmesini ge\u00e7ici olarak durduran bir i\u015faretleyicidir. Bu sayede o noktadaki de\u011fi\u015fken de\u011ferlerini inceleyebilir ve program\u0131n o ana kadarki durumunu analiz edebilirsiniz. VS Code&#8217;da bir sat\u0131r numaras\u0131n\u0131n solundaki bo\u015flu\u011fa t\u0131klayarak kesme noktas\u0131 ekleyebilir veya kald\u0131rabilirsiniz.<br \/>\n*   <strong>Ad\u0131mlama (Stepping):<\/strong> Program y\u00fcr\u00fctmesini durdurduktan sonra, kodu sat\u0131r sat\u0131r ilerletme i\u015flemidir.<br \/>\n    *   <strong>Step Over (Ad\u0131m \u00dczerinden Atla):<\/strong> Mevcut sat\u0131rdaki kodu \u00e7al\u0131\u015ft\u0131r\u0131r ve bir sonraki sat\u0131ra ge\u00e7er. E\u011fer mevcut sat\u0131r bir fonksiyon \u00e7a\u011fr\u0131s\u0131 i\u00e7eriyorsa, fonksiyonun i\u00e7ine girmeden t\u00fcm fonksiyonu \u00e7al\u0131\u015ft\u0131r\u0131r ve fonksiyonun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 sat\u0131rdan sonraki sat\u0131ra ge\u00e7er.<br \/>\n    *   <strong>Step Into (Ad\u0131m \u0130\u00e7ine Gir):<\/strong> Mevcut sat\u0131rdaki kodu \u00e7al\u0131\u015ft\u0131r\u0131r. E\u011fer mevcut sat\u0131r bir fonksiyon \u00e7a\u011fr\u0131s\u0131 i\u00e7eriyorsa, fonksiyonun tan\u0131m\u0131n\u0131n ilk sat\u0131r\u0131na girer ve y\u00fcr\u00fctmeyi oradan devam ettirir.<br \/>\n    *   <strong>Step Out (Ad\u0131m D\u0131\u015far\u0131 \u00c7\u0131k):<\/strong> Mevcut fonksiyonun geri kalan\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r ve bu fonksiyonun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 yere geri d\u00f6ner.<br \/>\n    *   <strong>Continue (Devam Et):<\/strong> Bir sonraki kesme noktas\u0131na kadar veya program\u0131n sonuna kadar y\u00fcr\u00fctmeye devam eder.<br \/>\n*   <strong>De\u011fi\u015fken \u0130nceleme (Variable Inspection):<\/strong> Hata ay\u0131klama s\u0131ras\u0131nda, belirli bir noktada tan\u0131mlanm\u0131\u015f t\u00fcm de\u011fi\u015fkenlerin de\u011ferlerini g\u00f6r\u00fcnt\u00fcleme yetene\u011fidir. Bu, program\u0131n beklenen duruma sahip olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in hayati \u00f6neme sahiptir.<br \/>\n*   <strong>\u00c7a\u011fr\u0131 Y\u0131\u011f\u0131n\u0131 (Call Stack):<\/strong> Bir program\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 anda aktif olan t\u00fcm fonksiyonlar\u0131n listesidir. Bu, bir hatan\u0131n nerede meydana geldi\u011fini ve hangi fonksiyon \u00e7a\u011fr\u0131lar\u0131 zincirinin o hataya yol a\u00e7t\u0131\u011f\u0131n\u0131 anlamak i\u00e7in \u00e7ok \u00f6nemlidir.<br \/>\n*   <strong>Hata Ay\u0131klama Konsolu (Debug Console):<\/strong> Hata ay\u0131klama s\u0131ras\u0131nda, de\u011fi\u015fkenleri de\u011ferlendirmek, ifadeler \u00e7al\u0131\u015ft\u0131rmak veya program \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131lan etkile\u015fimli bir konsoldur. <code>console.log<\/code> ifadeleri de burada g\u00f6r\u00fcn\u00fcr.<\/p>\n<h3>Visual Studio Code&#8217;da Hata Ay\u0131klamaya Ba\u015flamak<\/h3>\n<p>VS Code&#8217;da Node.js hata ay\u0131klamay\u0131 ba\u015flatman\u0131n birka\u00e7 yolu vard\u0131r. En yayg\u0131n ve g\u00fc\u00e7l\u00fc y\u00f6ntem <code>launch.json<\/code> dosyas\u0131n\u0131 yap\u0131land\u0131rmakt\u0131r.<\/p>\n<h4><code>launch.json<\/code> Dosyas\u0131n\u0131 Yap\u0131land\u0131rmak<\/h4>\n<p><code>launch.json<\/code> dosyas\u0131, VS Code&#8217;un hata ay\u0131klay\u0131c\u0131s\u0131na uygulaman\u0131z\u0131 nas\u0131l ba\u015flataca\u011f\u0131n\u0131 veya mevcut bir s\u00fcrece nas\u0131l ba\u011flanaca\u011f\u0131n\u0131 bildiren bir yap\u0131land\u0131rma dosyas\u0131d\u0131r. Bu dosya, projenizin k\u00f6k dizinindeki <code>.vscode<\/code> klas\u00f6r\u00fcnde bulunur.<\/p>\n<p>1.  <strong>Hata Ay\u0131klama G\u00f6r\u00fcn\u00fcm\u00fcn\u00fc A\u00e7\u0131n:<\/strong> VS Code&#8217;un sol kenar \u00e7ubu\u011fundaki &#8220;\u00c7al\u0131\u015ft\u0131r ve Hata Ay\u0131kla&#8221; (Run and Debug) simgesine (bir b\u00f6cek ve oynat d\u00fc\u011fmesi gibi g\u00f6r\u00fcn\u00fcr) t\u0131klay\u0131n.<br \/>\n2.  <strong><code>launch.json<\/code> Olu\u015fturun:<\/strong> Hen\u00fcz bir <code>launch.json<\/code> dosyan\u0131z yoksa, &#8220;launch.json dosyas\u0131 olu\u015ftur&#8221; (create a launch.json file) ba\u011flant\u0131s\u0131na t\u0131klay\u0131n. VS Code size bir ortam se\u00e7menizi isteyecektir; &#8220;Node.js&#8221; se\u00e7ene\u011fini se\u00e7in. Bu, projeniz i\u00e7in temel bir <code>launch.json<\/code> dosyas\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p>\u00d6rnek bir <code>launch.json<\/code> dosyas\u0131 a\u015fa\u011f\u0131daki gibi g\u00f6r\u00fcnebilir:<\/p>\n<pre><code class=\"language-json\">{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"Mevcut Dosyay\u0131 \u00c7al\u0131\u015ft\u0131r\",\n            \"program\": \"${file}\"\n        },\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"Uygulamay\u0131 Ba\u015flat\",\n            \"program\": \"${workspaceFolder}\/src\/app.js\",\n            \"runtimeArgs\": [\"--inspect-brk\"],\n            \"args\": [\"--port\", \"3000\"],\n            \"env\": {\n                \"NODE_ENV\": \"development\",\n                \"DEBUG_MODE\": \"true\"\n            },\n            \"cwd\": \"${workspaceFolder}\"\n        },\n        {\n            \"type\": \"node\",\n            \"request\": \"attach\",\n            \"name\": \"S\u00fcrece Ba\u011flan\",\n            \"port\": 9229,\n            \"restart\": true\n        }\n    ]\n}<\/code><\/pre>\n<h4>Manuel Yap\u0131land\u0131rma Ad\u0131mlar\u0131<\/h4>\n<p>Yukar\u0131daki <code>launch.json<\/code> dosyas\u0131ndaki anahtar alanlar\u0131 a\u00e7\u0131klayal\u0131m:<\/p>\n<p>*   <strong><code>type<\/code><\/strong>: Hata ay\u0131klay\u0131c\u0131n\u0131n t\u00fcr\u00fcn\u00fc belirtir. Node.js i\u00e7in bu her zaman <code>\"node\"<\/code> olacakt\u0131r.<br \/>\n*   <strong><code>request<\/code><\/strong>: Hata ay\u0131klay\u0131c\u0131n\u0131n nas\u0131l davranaca\u011f\u0131n\u0131 belirtir.<br \/>\n    *   <code>\"launch\"<\/code>: Yeni bir Node.js s\u00fcreci ba\u015flat\u0131r ve ona ba\u011flan\u0131r.<br \/>\n    *   <code>\"attach\"<\/code>: Zaten \u00e7al\u0131\u015fan bir Node.js s\u00fcrecine ba\u011flan\u0131r.<br \/>\n*   <strong><code>name<\/code><\/strong>: Hata ay\u0131klama yap\u0131land\u0131rmas\u0131n\u0131n VS Code aray\u00fcz\u00fcnde g\u00f6r\u00fcnen ad\u0131d\u0131r. Birden fazla yap\u0131land\u0131rman\u0131z oldu\u011funda aralar\u0131nda se\u00e7im yapman\u0131z\u0131 kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong><code>program<\/code><\/strong>: <code>\"launch\"<\/code> iste\u011fi i\u00e7in, \u00e7al\u0131\u015ft\u0131r\u0131lacak Node.js ana dosyas\u0131n\u0131n yolunu belirtir. <code>${workspaceFolder}<\/code> projenin k\u00f6k dizinine i\u015faret eder. <code>${file}<\/code> ise o an a\u00e7\u0131k olan dosyay\u0131 ifade eder.<br \/>\n*   <strong><code>args<\/code><\/strong>: Node.js beti\u011fine iletilecek komut sat\u0131r\u0131 arg\u00fcmanlar\u0131d\u0131r (\u00f6rne\u011fin, <code>--port 3000<\/code>).<br \/>\n*   <strong><code>runtimeArgs<\/code><\/strong>: Node.js \u00e7al\u0131\u015fma zaman\u0131na (V8 motoruna) iletilecek arg\u00fcmanlard\u0131r (\u00f6rne\u011fin, <code>--inspect-brk<\/code> hata ay\u0131klay\u0131c\u0131n\u0131n kodun en ba\u015f\u0131nda durmas\u0131n\u0131 sa\u011flar).<br \/>\n*   <strong><code>env<\/code><\/strong>: Ortam de\u011fi\u015fkenlerini ayarlar. Bu, geli\u015ftirme, test veya \u00fcretim ortamlar\u0131 i\u00e7in farkl\u0131 yap\u0131land\u0131rmalar sa\u011flamak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong><code>cwd<\/code> (Current Working Directory):<\/strong> Node.js s\u00fcrecinin ba\u015flat\u0131laca\u011f\u0131 \u00e7al\u0131\u015fma dizinidir. Genellikle <code>${workspaceFolder}<\/code> olarak ayarlan\u0131r.<br \/>\n*   <strong><code>port<\/code><\/strong>: <code>\"attach\"<\/code> iste\u011fi i\u00e7in, ba\u011flan\u0131lacak Node.js hata ay\u0131klama portunu belirtir (varsay\u0131lan genellikle 9229&#8217;dur).<br \/>\n*   <strong><code>restart<\/code><\/strong>: <code>\"attach\"<\/code> modunda, Node.js s\u00fcreci yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda hata ay\u0131klay\u0131c\u0131n\u0131n otomatik olarak yeniden ba\u011flan\u0131p ba\u011flanmayaca\u011f\u0131n\u0131 belirtir.<\/p>\n<p>Bir yap\u0131land\u0131rmay\u0131 se\u00e7ip hata ay\u0131klamay\u0131 ba\u015flatmak i\u00e7in, Hata Ay\u0131klama g\u00f6r\u00fcn\u00fcm\u00fcndeki a\u00e7\u0131l\u0131r men\u00fcden istedi\u011finiz yap\u0131land\u0131rmay\u0131 se\u00e7in ve ye\u015fil oynat d\u00fc\u011fmesine (F5) bas\u0131n.<\/p>\n<h4>Otomatik Yap\u0131land\u0131rma (Auto Attach)<\/h4>\n<p>VS Code&#8217;un son s\u00fcr\u00fcmlerinde, <code>launch.json<\/code> dosyas\u0131n\u0131 manuel olarak yap\u0131land\u0131rma ihtiyac\u0131n\u0131 azaltan veya ortadan kald\u0131ran &#8220;Auto Attach&#8221; \u00f6zelli\u011fi bulunmaktad\u0131r. Bu \u00f6zellik, VS Code&#8217;un terminalinde ba\u015flat\u0131lan Node.js s\u00fcre\u00e7lerini otomatik olarak alg\u0131lar ve bunlara ba\u011flan\u0131r.<\/p>\n<p>Auto Attach&#8217;i etkinle\u015ftirmek i\u00e7in:<\/p>\n<p>1.  VS Code ayarlar\u0131n\u0131 a\u00e7\u0131n (Ctrl+, veya Command+,).<br \/>\n2.  Arama \u00e7ubu\u011funa <code>debug.node.autoAttach<\/code> yaz\u0131n.<br \/>\n3.  Bu ayar\u0131 <code>on<\/code> olarak de\u011fi\u015ftirin. Alternatif olarak, <code>processWithInspect<\/code> veya <code>onlyWithFlag<\/code> gibi daha spesifik se\u00e7enekleri de tercih edebilirsiniz.<br \/>\n    *   <code>on<\/code>: Herhangi bir Node.js s\u00fcrecine otomatik olarak ba\u011flan\u0131r.<br \/>\n    *   <code>processWithInspect<\/code>: Sadece <code>--inspect<\/code> veya <code>--inspect-brk<\/code> bayra\u011f\u0131 ile ba\u015flat\u0131lan Node.js s\u00fcre\u00e7lerine ba\u011flan\u0131r.<br \/>\n    *   <code>onlyWithFlag<\/code>: Yaln\u0131zca bir Node.js beti\u011fi <code>--inspect<\/code> veya <code>--inspect-brk<\/code> bayra\u011f\u0131yla ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u011flan\u0131r.<\/p>\n<p>Auto Attach etkinle\u015ftirildi\u011finde, VS Code terminalinde <code>node app.js<\/code> veya <code>npm run dev<\/code> gibi bir komutla Node.js uygulaman\u0131z\u0131 ba\u015flatt\u0131\u011f\u0131n\u0131zda, hata ay\u0131klay\u0131c\u0131 otomatik olarak s\u00fcrece ba\u011flanacakt\u0131r. Bu, h\u0131zl\u0131 testler ve basit uygulamalar i\u00e7in son derece kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Hata Ay\u0131klama Aray\u00fcz\u00fc: Bile\u015fenler ve Kullan\u0131m<\/h3>\n<p>Hata ay\u0131klama oturumu ba\u015flad\u0131\u011f\u0131nda, VS Code&#8217;un sol kenar \u00e7ubu\u011fundaki Hata Ay\u0131klama g\u00f6r\u00fcn\u00fcm\u00fc (Run and Debug) ve \u00fcstteki hata ay\u0131klama kontrol \u00e7ubu\u011fu aktif hale gelir.<\/p>\n<h4>De\u011fi\u015fkenler (Variables) Paneli<\/h4>\n<p>Bu panel, mevcut kapsamdaki t\u00fcm de\u011fi\u015fkenlerin de\u011ferlerini g\u00f6sterir. Program bir kesme noktas\u0131nda durdu\u011funda, &#8220;Local&#8221; (Yerel), &#8220;Global&#8221; (Genel) ve &#8220;Closure&#8221; (Kapan\u0131m) gibi kategoriler alt\u0131nda de\u011fi\u015fkenleri g\u00f6rebilirsiniz. De\u011fi\u015fkenlerin de\u011ferlerini geni\u015fleterek nesnelerin ve dizilerin i\u00e7eri\u011fini inceleyebilirsiniz. Hata ay\u0131klama s\u0131ras\u0131nda de\u011fi\u015fken de\u011ferlerini do\u011frudan de\u011fi\u015ftirmek de m\u00fcmk\u00fcnd\u00fcr, bu da farkl\u0131 senaryolar\u0131 test etmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>\u0130zleme (Watch) Paneli<\/h4>\n<p>\u0130zleme paneli, belirli de\u011fi\u015fkenlerin veya ifadelerin de\u011ferlerini s\u00fcrekli olarak takip etmenizi sa\u011flar. Bir de\u011fi\u015fken veya ifade ekledi\u011finizde, program\u0131n y\u00fcr\u00fctmesi s\u0131ras\u0131nda de\u011feri her de\u011fi\u015fti\u011finde g\u00fcncellenir. Bu, karma\u015f\u0131k ifadelerin veya belirli bir de\u011fi\u015fkendeki de\u011fi\u015fikliklerin neden oldu\u011fu sorunlar\u0131 anlamak i\u00e7in \u00e7ok faydal\u0131d\u0131r. \u0130zleme paneline bir ifade eklemek i\u00e7in <code>+<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n ve ifadeyi yaz\u0131n.<\/p>\n<h4>\u00c7a\u011fr\u0131 Y\u0131\u011f\u0131n\u0131 (Call Stack) Paneli<\/h4>\n<p>\u00c7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131 paneli, program\u0131n mevcut y\u00fcr\u00fctme noktas\u0131nda hangi fonksiyonlar\u0131n birbirini \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6sterir. Her bir \u00f6\u011fe, bir fonksiyon \u00e7a\u011fr\u0131s\u0131n\u0131 temsil eder ve \u00fcstteki \u00f6\u011fe en son \u00e7a\u011fr\u0131lan fonksiyonu (mevcut y\u00fcr\u00fctme noktas\u0131), alttaki \u00f6\u011fe ise ilk \u00e7a\u011fr\u0131lan fonksiyonu g\u00f6sterir. Bu panel, bir hatan\u0131n k\u00f6kenini bulmak ve program\u0131n ak\u0131\u015f\u0131n\u0131 anlamak i\u00e7in kritik \u00f6neme sahiptir. Y\u0131\u011f\u0131ndaki herhangi bir \u00f6\u011feye t\u0131klayarak, o fonksiyonun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 koda atlayabilir ve o andaki yerel de\u011fi\u015fkenleri inceleyebilirsiniz.<\/p>\n<h4>Kesme Noktalar\u0131 (Breakpoints) Paneli<\/h4>\n<p>Bu panel, projenizdeki t\u00fcm etkin ve devre d\u0131\u015f\u0131 b\u0131rak\u0131lm\u0131\u015f kesme noktalar\u0131n\u0131 listeler. Buradan kesme noktalar\u0131n\u0131 tek tek etkinle\u015ftirebilir veya devre d\u0131\u015f\u0131 b\u0131rakabilir, silebilir veya t\u00fcm\u00fcn\u00fc devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz. Ayr\u0131ca, &#8220;Uncaught Exceptions&#8221; (Yakalanmayan \u0130stisnalar) ve &#8220;Caught Exceptions&#8221; (Yakalanan \u0130stisnalar) i\u00e7in \u00f6zel durum kesme noktalar\u0131n\u0131 da burada y\u00f6netebilirsiniz.<\/p>\n<h4>Hata Ay\u0131klama Konsolu (Debug Console)<\/h4>\n<p>Hata ay\u0131klama konsolu, iki ana ama\u00e7 i\u00e7in kullan\u0131l\u0131r:<\/p>\n<p>1.  <strong>\u00c7\u0131kt\u0131y\u0131 G\u00f6r\u00fcnt\u00fcleme:<\/strong> <code>console.log()<\/code>, <code>console.error()<\/code> gibi Node.js \u00e7\u0131kt\u0131lar\u0131n\u0131n yan\u0131 s\u0131ra, hata ay\u0131klay\u0131c\u0131n\u0131n kendi mesajlar\u0131n\u0131 da g\u00f6sterir.<br \/>\n2.  <strong>\u0130fade De\u011ferlendirme:<\/strong> Program bir kesme noktas\u0131nda durdu\u011funda, konsola herhangi bir JavaScript ifadesi yazabilir ve an\u0131nda sonucunu g\u00f6rebilirsiniz. \u00d6rne\u011fin, <code>myVariable<\/code> yaz\u0131p Enter&#8217;a basarak <code>myVariable<\/code>&#8216;\u0131n o anki de\u011ferini g\u00f6rebilirsiniz. Veya <code>myObject.property = 'newValue'<\/code> yazarak bir de\u011fi\u015fkenin de\u011ferini de\u011fi\u015ftirebilirsiniz. Bu, anl\u0131k testler yapmak ve program\u0131n durumunu de\u011fi\u015ftirmek i\u00e7in \u00e7ok g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Hata Ay\u0131klama Teknikleri<\/h3>\n<p>VS Code, temel hata ay\u0131klama \u00f6zelliklerinin \u00f6tesinde, daha karma\u015f\u0131k senaryolar i\u00e7in geli\u015ftirilmi\u015f teknikler sunar.<\/p>\n<h4>Ko\u015fullu Kesme Noktalar\u0131 (Conditional Breakpoints)<\/h4>\n<p>Bazen bir d\u00f6ng\u00fc i\u00e7inde veya s\u0131k \u00e7a\u011fr\u0131lan bir fonksiyonda sadece belirli bir ko\u015ful sa\u011fland\u0131\u011f\u0131nda durmak isteyebilirsiniz. Ko\u015fullu kesme noktalar\u0131 tam da bu i\u015fe yarar.<\/p>\n<p>Bir ko\u015fullu kesme noktas\u0131 eklemek i\u00e7in:<\/p>\n<p>1.  Normal bir kesme noktas\u0131 ekledi\u011finiz gibi sat\u0131r numaras\u0131n\u0131n soluna t\u0131klay\u0131n.<br \/>\n2.  Ekledi\u011finiz kesme noktas\u0131na sa\u011f t\u0131klay\u0131n ve &#8220;Kesme Noktas\u0131n\u0131 D\u00fczenle&#8221; (Edit Breakpoint) se\u00e7ene\u011fini se\u00e7in.<br \/>\n3.  A\u00e7\u0131lan k\u00fc\u00e7\u00fck pencereye bir JavaScript ifadesi yaz\u0131n (\u00f6rne\u011fin, <code>i === 10<\/code> veya <code>user.id === 'some-id'<\/code>).<br \/>\n4.  Enter&#8217;a bas\u0131n.<\/p>\n<p>Program sadece belirtti\u011finiz ko\u015ful <code>true<\/code> d\u00f6nd\u00fc\u011f\u00fcnde bu kesme noktas\u0131nda duracakt\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken veya belirli bir durumun neden oldu\u011fu bir hatay\u0131 ararken \u00e7ok zaman kazand\u0131r\u0131r.<\/p>\n<h4>Log Noktalar\u0131 (Logpoints)<\/h4>\n<p>Log noktalar\u0131, kodunuza ge\u00e7ici <code>console.log<\/code> ifadeleri eklemenin bir yoludur, ancak kodu ger\u00e7ekten de\u011fi\u015ftirmenize gerek kalmaz. Bu, \u00f6zellikle bir de\u011feri takip etmek istedi\u011finizde ancak program\u0131n durmas\u0131n\u0131 istemedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Bir log noktas\u0131 eklemek i\u00e7in:<\/p>\n<p>1.  Normal bir kesme noktas\u0131 ekledi\u011finiz gibi sat\u0131r numaras\u0131n\u0131n soluna t\u0131klay\u0131n.<br \/>\n2.  Ekledi\u011finiz kesme noktas\u0131na sa\u011f t\u0131klay\u0131n ve &#8220;Logpoint Ekle&#8221; (Add Logpoint) se\u00e7ene\u011fini se\u00e7in.<br \/>\n3.  A\u00e7\u0131lan k\u00fc\u00e7\u00fck pencereye bir mesaj veya ifade yaz\u0131n (\u00f6rne\u011fin, <code>'D\u00f6ng\u00fcde i de\u011feri: ' + i<\/code> veya <code>user.name<\/code>).<br \/>\n4.  Enter&#8217;a bas\u0131n.<\/p>\n<p>Program bu noktadan ge\u00e7ti\u011finde, belirtilen mesaj veya ifadenin de\u011feri Hata Ay\u0131klama Konsolu&#8217;nda g\u00f6r\u00fcnt\u00fclenecektir, ancak program durmayacakt\u0131r.<\/p>\n<h4>\u00d6zel Durum Kesme Noktalar\u0131 (Exception Breakpoints)<\/h4>\n<p>Bu t\u00fcr kesme noktalar\u0131, bir istisna (hata) f\u0131rlat\u0131ld\u0131\u011f\u0131nda program\u0131n durmas\u0131n\u0131 sa\u011flar. Bu, beklenmedik hatalar\u0131 yakalamak ve k\u00f6k nedenini anlamak i\u00e7in \u00e7ok \u00f6nemlidir.<\/p>\n<p>Hata Ay\u0131klama g\u00f6r\u00fcn\u00fcm\u00fcndeki Kesme Noktalar\u0131 panelinde &#8220;Uncaught Exceptions&#8221; (Yakalanmayan \u0130stisnalar) ve &#8220;Caught Exceptions&#8221; (Yakalanan \u0130stisnalar) se\u00e7eneklerini g\u00f6receksiniz. Bunlar\u0131 i\u015faretleyerek, Node.js uygulaman\u0131zda f\u0131rlat\u0131lan istisnalarda hata ay\u0131klay\u0131c\u0131n\u0131n durmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p>*   <strong>Uncaught Exceptions:<\/strong> Try-catch blo\u011fu taraf\u0131ndan yakalanmayan istisnalarda durur.<br \/>\n*   <strong>Caught Exceptions:<\/strong> Try-catch blo\u011fu taraf\u0131ndan yakalanan istisnalarda bile durur. Bu, bir istisnan\u0131n neden f\u0131rlat\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmek istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r, ancak genellikle \u00e7ok fazla durmaya neden olabilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h4>Fonksiyonel Kesme Noktalar\u0131 (Function Breakpoints)<\/h4>\n<p>Bazen bir fonksiyonun tam olarak nerede tan\u0131mland\u0131\u011f\u0131n\u0131 bilmeyebilirsiniz veya dinamik olarak y\u00fcklenen mod\u00fcllerdeki fonksiyonlarda durmak isteyebilirsiniz. Fonksiyonel kesme noktalar\u0131, belirli bir fonksiyon ad\u0131na ula\u015f\u0131ld\u0131\u011f\u0131nda durman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Fonksiyonel kesme noktas\u0131 eklemek i\u00e7in:<\/p>\n<p>1.  Kesme Noktalar\u0131 panelindeki <code>+<\/code> d\u00fc\u011fmesine t\u0131klay\u0131n.<br \/>\n2.  &#8220;Fonksiyonel Kesme Noktas\u0131&#8221; (Function Breakpoint) se\u00e7ene\u011fini se\u00e7in.<br \/>\n3.  A\u00e7\u0131lan metin kutusuna fonksiyonun ad\u0131n\u0131 yaz\u0131n (\u00f6rne\u011fin, <code>myUtilityFunction<\/code>).<\/p>\n<p>Program bu isimdeki bir fonksiyona girdi\u011finde duracakt\u0131r.<\/p>\n<h4>Attach Modu ile Hata Ay\u0131klama<\/h4>\n<p>Daha \u00f6nce de bahsetti\u011fimiz gibi, <code>attach<\/code> modu zaten \u00e7al\u0131\u015fan bir Node.js s\u00fcrecine ba\u011flanman\u0131z\u0131 sa\u011flar. Bu, \u00f6zellikle uzun s\u00fcredir \u00e7al\u0131\u015fan bir sunucu uygulamas\u0131n\u0131 veya bir <code>npm run dev<\/code> komutuyla ba\u015flat\u0131lm\u0131\u015f bir s\u00fcreci hata ay\u0131klamak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Bir Node.js s\u00fcrecini <code>attach<\/code> modunda hata ay\u0131klanabilir hale getirmek i\u00e7in, genellikle <code>--inspect<\/code> veya <code>--inspect-brk<\/code> bayra\u011f\u0131 ile ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">node --inspect-brk my-server.js<\/code><\/pre>\n<p>*   <code>--inspect<\/code>: Node.js s\u00fcrecini hata ay\u0131klama modunda ba\u015flat\u0131r ve hata ay\u0131klay\u0131c\u0131n\u0131n ba\u011flanmas\u0131n\u0131 bekler. S\u00fcre\u00e7 \u00e7al\u0131\u015fmaya devam eder.<br \/>\n*   <code>--inspect-brk<\/code>: Node.js s\u00fcrecini hata ay\u0131klama modunda ba\u015flat\u0131r ve kodun ilk sat\u0131r\u0131nda durur, hata ay\u0131klay\u0131c\u0131n\u0131n ba\u011flanmas\u0131n\u0131 bekler. Bu, ba\u015flang\u0131\u00e7 sorunlar\u0131n\u0131 yakalamak i\u00e7in idealdir.<\/p>\n<p>Ard\u0131ndan, <code>launch.json<\/code> dosyan\u0131zda <code>\"request\": \"attach\"<\/code> ve uygun <code>\"port\"<\/code> (varsay\u0131lan 9229) ile bir yap\u0131land\u0131rma olu\u015fturarak veya Auto Attach&#8217;i kullanarak s\u00fcrece ba\u011flanabilirsiniz.<\/p>\n<h4>\u00c7oklu S\u00fcre\u00e7lerde Hata Ay\u0131klama (Multi-process Debugging)<\/h4>\n<p>Mikroservis mimarileri veya birden fazla Node.js s\u00fcrecinin ayn\u0131 anda \u00e7al\u0131\u015ft\u0131\u011f\u0131 uygulamalar i\u00e7in VS Code, \u00e7oklu s\u00fcre\u00e7 hata ay\u0131klamas\u0131n\u0131 destekler. <code>launch.json<\/code> dosyas\u0131nda <code>compound<\/code> yap\u0131land\u0131rmas\u0131n\u0131 kullanarak birden fazla hata ay\u0131klama oturumunu ayn\u0131 anda ba\u015flatabilirsiniz.<\/p>\n<pre><code class=\"language-json\">{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"API Servisi\",\n            \"program\": \"${workspaceFolder}\/services\/api\/index.js\",\n            \"port\": 9229\n        },\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"Kullan\u0131c\u0131 Servisi\",\n            \"program\": \"${workspaceFolder}\/services\/user\/index.js\",\n            \"port\": 9230\n        }\n    ],\n    \"compounds\": [\n        {\n            \"name\": \"T\u00fcm Servisleri Ba\u015flat\",\n            \"configurations\": [\"API Servisi\", \"Kullan\u0131c\u0131 Servisi\"]\n        }\n    ]\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, &#8220;T\u00fcm Servisleri Ba\u015flat&#8221; bile\u015fik yap\u0131land\u0131rmas\u0131n\u0131 se\u00e7ip ba\u015flatt\u0131\u011f\u0131n\u0131zda, hem &#8220;API Servisi&#8221; hem de &#8220;Kullan\u0131c\u0131 Servisi&#8221; ayn\u0131 anda hata ay\u0131klama modunda ba\u015flat\u0131lacakt\u0131r. Her bir servis kendi hata ay\u0131klama oturumuna sahip olacak ve VS Code aray\u00fcz\u00fcnde bunlar aras\u0131nda ge\u00e7i\u015f yapabileceksiniz.<\/p>\n<h4>Otomatik Yeniden Ba\u015flatma ile Hata Ay\u0131klama (nodemon entegrasyonu)<\/h4>\n<p>Geli\u015ftirme s\u0131ras\u0131nda kodda yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fiklikten sonra sunucuyu manuel olarak yeniden ba\u015flatmak s\u0131k\u0131c\u0131 olabilir. <code>nodemon<\/code> gibi ara\u00e7lar bu s\u00fcreci otomatikle\u015ftirir. <code>launch.json<\/code> dosyan\u0131z\u0131 <code>nodemon<\/code> ile entegre ederek hem otomatik yeniden ba\u015flatma hem de hata ay\u0131klama avantajlar\u0131ndan faydalanabilirsiniz.<\/p>\n<pre><code class=\"language-json\">{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"type\": \"node\",\n            \"request\": \"launch\",\n            \"name\": \"Nodemon ile Hata Ay\u0131kla\",\n            \"runtimeExecutable\": \"nodemon\",\n            \"program\": \"${workspaceFolder}\/src\/app.js\",\n            \"restart\": true,\n            \"console\": \"integratedTerminal\",\n            \"internalConsoleOptions\": \"neverOpen\",\n            \"args\": [\"--inspect=9229\"]\n        }\n    ]\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rmada:<br \/>\n*   <code>runtimeExecutable<\/code>: Node.js yerine <code>nodemon<\/code>&#8216;u \u00e7al\u0131\u015ft\u0131r\u0131lacak y\u00fcr\u00fct\u00fclebilir dosya olarak belirtiriz.<br \/>\n*   <code>program<\/code>: <code>nodemon<\/code>&#8216;un \u00e7al\u0131\u015ft\u0131raca\u011f\u0131 ana Node.js dosyas\u0131n\u0131 belirtir.<br \/>\n*   <code>restart<\/code>: <code>nodemon<\/code> s\u00fcreci yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda VS Code hata ay\u0131klay\u0131c\u0131s\u0131n\u0131n da yeniden ba\u011flanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>args<\/code>: <code>nodemon<\/code>&#8216;a <code>--inspect=9229<\/code> arg\u00fcman\u0131n\u0131 vererek, Node.js s\u00fcrecini hata ay\u0131klama modunda ba\u015flatmas\u0131n\u0131 s\u00f6yleriz.<\/p>\n<p>Bu sayede, kodunuzu kaydetti\u011finizde <code>nodemon<\/code> uygulaman\u0131z\u0131 yeniden ba\u015flatacak ve VS Code hata ay\u0131klay\u0131c\u0131s\u0131 otomatik olarak yeni s\u00fcrece ba\u011flanacakt\u0131r.<\/p>\n<h4>Async\/Await Kodunda Hata Ay\u0131klama<\/h4>\n<p>Node.js&#8217;in asenkron do\u011fas\u0131 ve <code>async\/await<\/code> kullan\u0131m\u0131, hata ay\u0131klamay\u0131 bazen zorla\u015ft\u0131rabilir. Geleneksel olarak, bir <code>Promise<\/code> zincirindeki hatalar\u0131 izlemek karma\u015f\u0131kt\u0131. Ancak VS Code&#8217;un V8 entegrasyonu sayesinde, <code>async\/await<\/code> kodunda hata ay\u0131klama olduk\u00e7a sorunsuz hale gelmi\u015ftir. Kesme noktalar\u0131, <code>await<\/code> ifadelerinin hemen \u00f6ncesine ve sonras\u0131na yerle\u015ftirilebilir ve \u00e7a\u011fr\u0131 y\u0131\u011f\u0131n\u0131, asenkron \u00e7a\u011fr\u0131lar\u0131 da g\u00f6sterecek \u015fekilde daha anlaml\u0131 bilgiler sunar.<\/p>\n<p>\u00d6nemli olan, <code>Promise<\/code>&#8216;lar\u0131n <code>catch<\/code> bloklar\u0131n\u0131 do\u011fru bir \u015fekilde kullanmak ve hatalar\u0131 uygun yerlerde yakalamakt\u0131r. Hata ay\u0131klama s\u0131ras\u0131nda, <code>Promise<\/code>&#8216;lar\u0131n durumlar\u0131n\u0131 (pending, fulfilled, rejected) ve de\u011ferlerini de\u011fi\u015fkenler panelinde veya izleme panelinde takip edebilirsiniz.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>*   <strong>Kesme Noktalar\u0131 \u00c7al\u0131\u015fm\u0131yor:<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> Kodunuzda kesme noktas\u0131 var ama program durmuyor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n        *   Do\u011fru <code>launch.json<\/code> yap\u0131land\u0131rmas\u0131n\u0131 se\u00e7ti\u011finizden emin olun.<br \/>\n        *   Program\u0131n ger\u00e7ekten o koda ula\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n        <em>   E\u011fer TypeScript veya Babel gibi bir transpiler kullan\u0131yorsan\u0131z, <code>source maps<\/code> (kaynak haritalar\u0131) do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f olmal\u0131d\u0131r. <code>tsconfig.json<\/code> dosyan\u0131zda <code>sourceMap: true<\/code> ve <code>outDir<\/code> ayarlar\u0131n\u0131n do\u011fru oldu\u011fundan emin olun. <code>launch.json<\/code> i\u00e7inde <code>outFiles<\/code> ayar\u0131n\u0131 da kontrol edin (\u00f6rne\u011fin, <code>\"outFiles\": [\"${workspaceFolder}\/dist\/<\/em><em>\/<\/em>.js\"]<\/code>).<br \/>\n        *   VS Code&#8217;un Node.js hata ay\u0131klama uzant\u0131s\u0131n\u0131n g\u00fcncel oldu\u011fundan emin olun.<br \/>\n        *   Bazen basit bir VS Code yeniden ba\u015flatmas\u0131 sorunu \u00e7\u00f6zebilir.<br \/>\n*   <strong><code>launch.json<\/code> Hatalar\u0131:<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> <code>program<\/code> yolu yanl\u0131\u015f, ortam de\u011fi\u015fkenleri uygulanm\u0131yor, vb.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Yollar\u0131 dikkatlice kontrol edin. Mutlak yollar yerine <code>${workspaceFolder}<\/code> gibi de\u011fi\u015fkenleri kullan\u0131n. <code>launch.json<\/code> dosyas\u0131nda syntax hatalar\u0131 olmad\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>Performans Sorunlar\u0131:<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> Hata ay\u0131klama oturumu yava\u015f \u00e7al\u0131\u015f\u0131yor veya tak\u0131l\u0131yor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> \u00c7ok fazla kesme noktas\u0131 eklemek performans\u0131 etkileyebilir. Gereksiz kesme noktalar\u0131n\u0131 kald\u0131r\u0131n veya ko\u015fullu kesme noktalar\u0131 ve log noktalar\u0131 kullan\u0131n.<br \/>\n*   <strong>Attach Modu Ba\u011flanm\u0131yor:<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> \u00c7al\u0131\u015fan Node.js s\u00fcrecine ba\u011flan\u0131lam\u0131yor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n        *   Node.js s\u00fcrecini <code>--inspect<\/code> veya <code>--inspect-brk<\/code> bayra\u011f\u0131 ile ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n        *   <code>launch.json<\/code> dosyas\u0131ndaki <code>port<\/code> ayar\u0131n\u0131n, Node.js s\u00fcrecinin dinledi\u011fi port ile ayn\u0131 oldu\u011fundan emin olun.<br \/>\n        *   G\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131 kontrol edin, portun engellenmedi\u011finden emin olun.<br \/>\n*   <strong>De\u011fi\u015fken De\u011ferleri G\u00f6sterilmiyor:<\/strong><br \/>\n    *   <strong>Sorun:<\/strong> Kesme noktas\u0131nda durulmas\u0131na ra\u011fmen de\u011fi\u015fkenler paneli bo\u015f veya yanl\u0131\u015f de\u011ferler g\u00f6steriyor.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Kapsam sorunlar\u0131 olabilir. De\u011fi\u015fkenin tan\u0131mland\u0131\u011f\u0131 ve eri\u015filebilir oldu\u011fu kapsamda oldu\u011funuzdan emin olun. Bazen optimizasyonlar nedeniyle baz\u0131 de\u011fi\u015fkenler hata ay\u0131klay\u0131c\u0131 taraf\u0131ndan g\u00f6r\u00fclemeyebilir; bu durumda, de\u011fi\u015fkeni bir <code>console.log<\/code> ile yazd\u0131rarak veya log noktas\u0131 kullanarak kontrol etmeyi deneyin.<\/p>\n<h3>Performans \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>*   <strong>Sourcemap Kullan\u0131m\u0131:<\/strong> E\u011fer TypeScript, Babel veya ba\u015fka bir d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc kullan\u0131yorsan\u0131z, <code>source maps<\/code> olu\u015fturmay\u0131 ve bunlar\u0131 <code>launch.json<\/code> dosyan\u0131zda <code>outFiles<\/code> ile do\u011fru \u015fekilde yap\u0131land\u0131rmay\u0131 unutmay\u0131n. Bu, d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f JavaScript yerine orijinal kodunuz \u00fczerinde hata ay\u0131klama yapman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>Hedef Odakl\u0131 Hata Ay\u0131klama:<\/strong> T\u00fcm uygulamay\u0131 ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131rmak yerine, sorunun olabilece\u011fi \u015f\u00fcpheli alanlara do\u011frudan kesme noktalar\u0131 yerle\u015ftirin.<br \/>\n*   <strong>Ko\u015fullu Kesme Noktalar\u0131 ve Log Noktalar\u0131n\u0131 Kullan\u0131n:<\/strong> \u00d6zellikle d\u00f6ng\u00fclerde veya s\u0131k \u00e7a\u011fr\u0131lan fonksiyonlarda, program\u0131n durmas\u0131n\u0131 istemedi\u011finiz durumlarda bu \u00f6zellikler \u00e7ok de\u011ferlidir.<br \/>\n*   <strong>Hata Ay\u0131klama Konsolunu Etkin Kullan\u0131n:<\/strong> De\u011fi\u015fken de\u011ferlerini an\u0131nda sorgulamak veya ifadeleri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in konsolu kullanmak, s\u00fcrekli kesme noktas\u0131 ekleyip kald\u0131rmaktan daha h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong><code>debugger;<\/code> \u0130fadesi:<\/strong> Bazen bir kesme noktas\u0131 eklemek yerine do\u011frudan kodunuza <code>debugger;<\/code> ifadesini yazabilirsiniz. Bu ifadeye ula\u015f\u0131ld\u0131\u011f\u0131nda, hata ay\u0131klay\u0131c\u0131 otomatik olarak duracakt\u0131r. \u00d6zellikle h\u0131zl\u0131 testler i\u00e7in veya bir kesme noktas\u0131n\u0131n s\u00fcrekli silinip eklenmesi yerine ge\u00e7ici bir \u00e7\u00f6z\u00fcm olarak kullan\u0131labilir. Ancak \u00fcretim koduna gitmemesine dikkat edin.<br \/>\n*   <strong>K\u00fc\u00e7\u00fck, \u0130zole Test Senaryolar\u0131:<\/strong> Karma\u015f\u0131k hatalar\u0131 ay\u0131klamak i\u00e7in, sorunu yeniden \u00fcreten en k\u00fc\u00e7\u00fck kod par\u00e7as\u0131n\u0131 izole etmeye \u00e7al\u0131\u015f\u0131n. Bu, sorunu anlamay\u0131 ve \u00e7\u00f6zmeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Versiyon Kontrol\u00fc:<\/strong> Hata ay\u0131klama s\u0131ras\u0131nda kodda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri versiyon kontrol sistemi (Git gibi) ile takip edin. Bazen bir de\u011fi\u015fikli\u011fin ba\u015fka bir hataya neden oldu\u011funu fark edebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Node.js kodunu Visual Studio Code&#8217;da hata ay\u0131klamak, modern geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r. VS Code&#8217;un g\u00fc\u00e7l\u00fc ve entegre hata ay\u0131klama yetenekleri sayesinde, karma\u015f\u0131k Node.js uygulamalar\u0131ndaki hatalar\u0131 tespit etmek, anlamak ve d\u00fczeltmek hi\u00e7 bu kadar kolay olmam\u0131\u015ft\u0131. Temel kesme noktalar\u0131ndan, ko\u015fullu kesme noktalar\u0131na, log noktalar\u0131na, \u00e7oklu s\u00fcre\u00e7 hata ay\u0131klamas\u0131na ve otomatik yeniden ba\u015flatma entegrasyonuna kadar geni\u015f bir ara\u00e7 yelpazesi sunulmaktad\u0131r.<\/p>\n<p>Bu makalede ele al\u0131nan teknikleri ve en iyi uygulamalar\u0131 benimseyerek, geli\u015ftirme verimlili\u011finizi art\u0131rabilir, daha sa\u011flam ve hatas\u0131z Node.js uygulamalar\u0131 olu\u015fturabilirsiniz. Unutmay\u0131n, hata ay\u0131klama sadece bir sorunu \u00e7\u00f6zmekten ibaret de\u011fildir; ayn\u0131 zamanda kodunuzu daha derinlemesine anlaman\u0131za ve daha iyi bir geli\u015ftirici olman\u0131za yard\u0131mc\u0131 olan bir \u00f6\u011frenme s\u00fcrecidir. Pratik yaparak ve VS Code&#8217;un sundu\u011fu t\u00fcm \u00f6zellikleri ke\u015ffederek, hata ay\u0131klama becerilerinizi s\u00fcrekli olarak geli\u015ftirebilirsiniz. Mutlu hata ay\u0131klamalar!<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi\nGiri\u015f: Neden Hata Ay\u0131klama \u00d6nemli?\nYaz\u0131l\u0131m geli\u015ftirme s\u00fcreci, kod yazmaktan \u00e7o","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[136],"tags":[],"class_list":{"0":"post-32397","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-node-js","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Node.js Kodunu Visual Studio Code&#039;da Hata Ay\u0131klama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Node.js Kodunu Visual Studio Code&#039;da Hata Ay\u0131klama Rehberi\" \/>\n<meta property=\"og:description\" content=\"Node.js Kodunu Visual Studio Code&#039;da Hata Ay\u0131klama Rehberi  Giri\u015f: Neden Hata Ay\u0131klama \u00d6nemli? Yaz\u0131l\u0131m geli\u015ftirme s\u00fcreci, kod yazmaktan \u00e7o\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-21T04:41:00+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi\",\"datePublished\":\"2025-10-21T04:41:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\"},\"wordCount\":3960,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Node.js\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\",\"name\":\"Node.js Kodunu Visual Studio Code'da Hata Ay\u0131klama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-21T04:41:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Node.js Kodunu Visual Studio Code'da Hata Ay\u0131klama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Node.js Kodunu Visual Studio Code'da Hata Ay\u0131klama Rehberi","og_description":"Node.js Kodunu Visual Studio Code'da Hata Ay\u0131klama Rehberi  Giri\u015f: Neden Hata Ay\u0131klama \u00d6nemli? Yaz\u0131l\u0131m geli\u015ftirme s\u00fcreci, kod yazmaktan \u00e7o","og_url":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-21T04:41:00+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi","datePublished":"2025-10-21T04:41:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/"},"wordCount":3960,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Node.js"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/","name":"Node.js Kodunu Visual Studio Code'da Hata Ay\u0131klama Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-21T04:41:00+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/node-js-kodunu-visual-studio-codeda-hata-ayiklama-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Node.js Kodunu Visual Studio Code&#8217;da Hata Ay\u0131klama Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32397"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32397\/revisions"}],"predecessor-version":[{"id":32398,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32397\/revisions\/32398"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}