ടൈപ്പ്സ്ക്രിപ്റ്റ് റൂട്ടുകളിലെ അസിൻക് ഫംഗ്ഷൻ പിശകുകൾ പരിഹരിക്കുന്നു

TypeScript

തുടക്കക്കാർക്കായി ടൈപ്പ്‌സ്‌ക്രിപ്റ്റിലെ അസിൻക് പ്രശ്‌നങ്ങൾ പരിഹരിക്കുന്നു

ടൈപ്പ്സ്ക്രിപ്റ്റിൽ നിന്ന് ആരംഭിക്കുന്നത് വെല്ലുവിളി നിറഞ്ഞതാണ്, പ്രത്യേകിച്ച് അസിൻക് ഫംഗ്ഷനുകളിൽ അപ്രതീക്ഷിത പിശകുകൾ ഉണ്ടാകുമ്പോൾ. 🛠️ പ്രത്യേകിച്ചും, ഒരു API നിർമ്മിക്കുമ്പോൾ റൂട്ട് പിശകുകൾ നേരിടുന്നത് ഡീബഗ്ഗിംഗ് ബുദ്ധിമുട്ടാക്കും.

ഈ സാഹചര്യത്തിൽ, കുടുങ്ങിപ്പോയതായി തോന്നുന്നത് എളുപ്പമാണ്, പ്രത്യേകിച്ചും ടൈപ്പ്സ്ക്രിപ്റ്റിൻ്റെ തരം സിസ്റ്റം നിഗൂഢമായി തോന്നുന്ന പിശകുകൾ സൃഷ്ടിക്കുകയാണെങ്കിൽ. നിങ്ങൾ Async ഫംഗ്‌ഷനുകൾ ഉപയോഗിച്ച് ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ് പര്യവേക്ഷണം ചെയ്യുമ്പോൾ, വ്യക്തമായ പരിഹാരങ്ങൾ നൽകാതെ തന്നെ ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ് ഫ്ലാഗ് ചെയ്യുന്ന പ്രശ്‌നങ്ങളിൽ നിങ്ങൾ ഇടപെട്ടേക്കാം. ഈ പിശകുകൾ പലപ്പോഴും കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാനങ്ങൾ അല്ലെങ്കിൽ ടൈപ്പ് പൊരുത്തക്കേടുകൾ എന്നിവയുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു, ഇത് ഒരു പ്രോജക്റ്റ് നിർത്തലാക്കും.

ഈ പോസ്റ്റിൽ, ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ് റൂട്ടുകളിൽ അസിൻക് ഫംഗ്‌ഷനുകൾ പരാജയപ്പെടുന്നതുമായി ബന്ധപ്പെട്ട ഒരു പൊതുവായ പ്രശ്‌നം ഞങ്ങൾ തകർക്കുകയും അത് എങ്ങനെ പടിപടിയായി ഡീബഗ് ചെയ്യാമെന്ന് കാണിക്കുകയും ചെയ്യും. `// @ts-ignore` പോലുള്ള പരിഹാരമാർഗങ്ങൾ ഉപയോഗിച്ച് പിശകുകൾ മറികടക്കുന്നതിനുപകരം, ഞങ്ങൾ പ്രധാന പ്രശ്നം പരിഹരിക്കും. ഈ സമീപനം ടൈപ്പ്സ്ക്രിപ്റ്റിൻ്റെ ശക്തമായ പിശക് പരിശോധിക്കുന്നതിനുള്ള സംവിധാനങ്ങളെക്കുറിച്ച് വ്യക്തമായ ധാരണ നൽകും, പ്രശ്നങ്ങൾ പരിഹരിക്കാനും ശക്തമായ കോഡ് എഴുതാനും നിങ്ങളെ സഹായിക്കുന്നു.

നിങ്ങൾ ഒരു ട്യൂട്ടോറിയൽ പിന്തുടരുകയാണെങ്കിലും അല്ലെങ്കിൽ സ്വതന്ത്രമായി പഠിക്കുകയാണെങ്കിലും, ഈ പ്രായോഗിക നുറുങ്ങുകൾ ടൈപ്പ്‌സ്‌ക്രിപ്‌റ്റിൻ്റെ വിചിത്രതകൾ ആത്മവിശ്വാസത്തോടെ നാവിഗേറ്റ് ചെയ്യാൻ നിങ്ങളെ സഹായിക്കും. നമുക്ക് മുങ്ങാം! 😎

കമാൻഡ് ഉപയോഗത്തിൻ്റെ ഉദാഹരണവും വിശദമായ വിവരണവും
asyncHandler ഈ ഹെൽപ്പർ ഫംഗ്‌ഷൻ ഒരു അസിൻക്രണസ് റൂട്ട് ഹാൻഡ്‌ലറിനെ പൊതിഞ്ഞ്, അസിൻക് ഫംഗ്‌ഷനുകളിൽ പിടിച്ചിരിക്കുന്ന ഏതെങ്കിലും പിശകുകൾ എക്‌സ്‌പ്രസിൻ്റെ പിശക് കൈകാര്യം ചെയ്യുന്ന മിഡിൽവെയറിലേക്ക് കൈമാറുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. അസിൻക് ഫംഗ്‌ഷനുകളിൽ കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലുകൾ തടയുന്നതിന് ഇത് അത്യന്താപേക്ഷിതമാണ്.
NextFunction എക്സ്പ്രസ് റൂട്ട് ഹാൻഡ്‌ലറുകളിൽ ഉപയോഗിക്കുന്നു, ഈ ആർഗ്യുമെൻ്റ് റൂട്ടിംഗ് നിയന്ത്രണം ലൈനിലെ അടുത്ത മിഡിൽവെയറിലേക്ക് കൈമാറാൻ അനുവദിക്കുന്നു, പ്രത്യേകിച്ച് പിശക് കൈകാര്യം ചെയ്യുന്നതിൽ. പിശകുകൾ സംഭവിക്കുമ്പോൾ, ഒരു ഗ്ലോബൽ എറർ മിഡിൽവെയർ ഉപയോഗിച്ച് അവ കൈകാര്യം ചെയ്യുന്നതിനായി അടുത്ത() സിഗ്നലുകൾ എക്സ്പ്രസ് എന്നതിലേക്ക് കൈമാറുന്നു.
Request, Response ഇൻകമിംഗ് അഭ്യർത്ഥനയും ഔട്ട്‌ഗോയിംഗ് റെസ്‌പോൺസ് ഒബ്‌ജക്‌റ്റുകളും ടൈപ്പ്-ചെക്ക് ചെയ്യാൻ എക്‌സ്‌പ്രസ് നൽകുന്ന തരങ്ങൾ. എല്ലാ അഭ്യർത്ഥനകളും പ്രതികരണ ഒബ്‌ജക്‌റ്റുകളും എക്‌സ്‌പ്രസിൻ്റെ ഘടന പിന്തുടരുന്നു, തെറ്റായി ക്രമീകരിച്ച ഹാൻഡ്‌ലറുകൾ കാരണം റൺടൈം പിശകുകൾ തടയുന്നു.
Promise.resolve().catch() asyncHandler-ൽ ഒരു ഫംഗ്‌ഷൻ ഒരു വാഗ്ദാനത്തിൽ പൊതിഞ്ഞ് ഏതെങ്കിലും തിരസ്‌കരണങ്ങൾ പിടിക്കാൻ ഉപയോഗിക്കുന്നു, അതിനാൽ കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലിന് കാരണമാകുന്നതിന് പകരം പിശകുകൾ ആഗോള പിശക് ഹാൻഡ്‌ലറിലേക്ക് കൈമാറാൻ കഴിയും.
res.status().json() HTTP സ്റ്റാറ്റസ് കോഡുകൾ സജ്ജീകരിക്കുന്നതിനും JSON പ്രതികരണങ്ങൾ അയക്കുന്നതിനുമുള്ള എക്സ്പ്രസിൻ്റെ മാർഗം. ക്ലയൻ്റുകൾക്ക് ഘടനാപരമായ പിശക് സന്ദേശങ്ങൾ അയയ്‌ക്കുന്നതിനും ഫ്രണ്ട്എൻഡ് ഡെവലപ്പർമാർക്കോ API ഉപഭോക്താക്കൾക്കോ ​​എളുപ്പത്തിൽ വ്യാഖ്യാനിക്കാൻ കഴിയുന്ന ശരിയായ API പ്രതികരണങ്ങൾ ഉറപ്പാക്കുന്നതിനും അത്യന്താപേക്ഷിതമാണ്.
supertest ഒരു എക്സ്പ്രസ് സെർവറിലേക്ക് HTTP അഭ്യർത്ഥനകൾ അനുകരിക്കുന്ന ഒരു ടെസ്റ്റിംഗ് യൂട്ടിലിറ്റി. ലൈവ് സെർവർ ലോഞ്ച് ചെയ്യാതെ റൂട്ട് പ്രതികരണങ്ങൾ പരിശോധിക്കാൻ ഡെവലപ്പർമാരെ പ്രാപ്തരാക്കുന്ന, ഒറ്റപ്പെട്ട രീതിയിലുള്ള യൂണിറ്റ് ടെസ്റ്റിംഗ് റൂട്ടുകൾക്ക് ഇത് പ്രധാനമാണ്.
describe() and test() ടെസ്റ്റ് കേസുകൾ സംഘടിപ്പിക്കുന്നതിനും നിർവചിക്കുന്നതിനുമുള്ള ജെസ്റ്റ് ഫംഗ്ഷനുകൾ. വിവരിക്കുക() ഗ്രൂപ്പുകളുമായി ബന്ധപ്പെട്ട ടെസ്റ്റുകൾ, കൂടാതെ test() ഓരോ നിർദ്ദിഷ്ട ടെസ്റ്റും നിർവചിക്കുന്നു. ഈ കമാൻഡുകൾ ഓട്ടോമേറ്റഡ് ടെസ്റ്റിംഗ് സുഗമമാക്കുന്നു, വിവിധ സാഹചര്യങ്ങളിൽ റൂട്ടുകൾ പ്രതീക്ഷിക്കുന്നത് പോലെ പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
router.post() POST അഭ്യർത്ഥനകൾക്കായി എക്സ്പ്രസിൽ ഒരു റൂട്ട് രജിസ്റ്റർ ചെയ്യുന്നു. റൂട്ട്-നിർദ്ദിഷ്‌ട ലോജിക്കിൻ്റെ ഓർഗനൈസേഷനെ അനുവദിക്കുന്ന, ഉപയോക്തൃ ഡാറ്റ സമർപ്പിക്കലുകൾ കൈകാര്യം ചെയ്യുന്ന API (ഉദാ. /സൈൻഅപ്പ്, /ലോഗിൻ) യിലെ നിർദ്ദിഷ്ട എൻഡ്‌പോയിൻ്റുകൾ നിർവചിക്കുന്നതിന് ഈ കമാൻഡ് അത്യന്താപേക്ഷിതമാണ്.
errorHandler middleware അസിൻക് റൂട്ടുകളിൽ നിന്നുള്ള പിശകുകൾ ക്യാപ്‌ചർ ചെയ്യുന്ന ഒരു ഇഷ്‌ടാനുസൃത പിശക് കൈകാര്യം ചെയ്യൽ ഫംഗ്‌ഷൻ, ലോഗിംഗ് വിശദാംശങ്ങൾ, ക്ലയൻ്റുകൾക്ക് ഘടനാപരമായ JSON പിശക് പ്രതികരണങ്ങൾ അയയ്‌ക്കുന്നു. ഈ മിഡിൽവെയർ പിശക് കൈകാര്യം ചെയ്യൽ കേന്ദ്രീകൃതമാക്കുന്നു, റൂട്ടുകളിലുടനീളം ആവർത്തനം കുറയ്ക്കുന്നു.

എക്സ്പ്രസിൽ ടൈപ്പ്സ്ക്രിപ്റ്റും അസിൻക് റൂട്ട് കൈകാര്യം ചെയ്യലും മനസ്സിലാക്കുന്നു

മുകളിലുള്ള ഉദാഹരണ സ്ക്രിപ്റ്റുകളിൽ, ഒരു എക്സ്പ്രസ് റൂട്ടിംഗ് സജ്ജീകരണത്തിനുള്ളിൽ അസിൻക് ഫംഗ്ഷനുകൾ കൈകാര്യം ചെയ്യുന്നതുമായി ബന്ധപ്പെട്ട് ടൈപ്പ്സ്ക്രിപ്റ്റിലെ ഒരു പൊതു പ്രശ്നം ഞങ്ങൾ പരിഹരിച്ചു. ഒരു ഉൾപ്പെട്ട കേന്ദ്ര പ്രശ്നം , എസിൻക്രണസ് ഫംഗ്‌ഷനുകൾ പ്രതീക്ഷിച്ചതുപോലെ പൂർത്തിയാകാത്തപ്പോൾ സംഭവിച്ചു. ഒരു അസിൻക് ഫംഗ്‌ഷൻ ഒരു ക്യാച്ച് ബ്ലോക്കിനാൽ ചുറ്റപ്പെടാത്തപ്പോൾ ഇത് പലപ്പോഴും സംഭവിക്കുന്നു, ഒരു പിശക് ഉണ്ടായാൽ സെർവർ തകരാൻ കാരണമാകുന്നു. ഇത് പരിഹരിക്കാൻ, ഞങ്ങൾ സഹായ ഫംഗ്‌ഷനുകളും മിഡിൽവെയറുകളും അവതരിപ്പിച്ചു, അത് പിശകുകൾ സ്വയമേവ കൈകാര്യം ചെയ്യുന്നു, ഇത് ടൈപ്പ്സ്‌ക്രിപ്റ്റിൽ സുഗമമായ പിശക് മാനേജ്മെൻ്റ് പ്രക്രിയയെ അനുവദിക്കുന്നു.

സൊല്യൂഷൻ 2-ൽ ഉപയോഗിച്ചിരിക്കുന്ന asyncHandler ഫംഗ്‌ഷൻ ഈ സമീപനത്തിൽ പ്രധാനമാണ്. asyncHandler-നുള്ളിൽ ഓരോ അസിൻക് റൂട്ട് ഹാൻഡ്‌ലറും പൊതിയുന്നതിലൂടെ, ഏതെങ്കിലും വാഗ്ദാന നിരസിക്കൽ പിടിച്ച് എക്‌സ്‌പ്രസിൻ്റെ ഗ്ലോബൽ എറർ ഹാൻഡ്‌ലറിന് കൈമാറുന്നുവെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു, പകരം അത് സെർവർ ക്രാഷിന് കാരണമാകുന്നു. ഈ പാറ്റേൺ ആവർത്തിച്ചുള്ള ട്രൈ-ക്യാച്ച് ബ്ലോക്കുകൾ ഉപയോഗിച്ച് ഓരോ അസിൻക് ഫംഗ്‌ഷനും അലങ്കോലപ്പെടുത്താതെ പിശക്-സഹിഷ്ണുത കോഡ് എഴുതുന്നത് എളുപ്പമാക്കുന്നു. ഉദാഹരണത്തിന്, മൂല്യനിർണ്ണയ പിശക് കാരണം ഒരു ഉപയോക്താവിൻ്റെ സൈൻഅപ്പ് ശ്രമം പരാജയപ്പെടുകയാണെങ്കിൽ, asyncHandler അത് പിടിക്കുകയും പിശക് ഹാൻഡ്‌ലറിലേക്ക് നേരിട്ട് റൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു. ഈ പാറ്റേൺ വികസനം ലളിതമാക്കുന്നു, പ്രത്യേകിച്ച് ഒന്നിലധികം അസിൻക് റൂട്ടുകളുള്ള ഒരു പ്രോജക്റ്റിൽ, കോഡ് വൃത്തിയുള്ളതും അനാവശ്യമായ പിശക് കൈകാര്യം ചെയ്യുന്ന കോഡിൽ നിന്ന് മുക്തവുമാണ്.

കൂടാതെ, ഞങ്ങൾ സൊല്യൂഷൻ 3-ൽ ഇഷ്‌ടാനുസൃത പിശക് കൈകാര്യം ചെയ്യുന്ന മിഡിൽവെയർ ഉപയോഗിച്ചു. ഈ മിഡിൽവെയർ അസിൻക് ഫംഗ്‌ഷനുകളിൽ നിന്ന് ബബിൾ അപ്പ് ചെയ്യുന്ന ഏതെങ്കിലും പിശകുകൾ പിടിക്കുകയും എളുപ്പത്തിൽ ഡീബഗ്ഗിംഗിനായി ലോഗ് ചെയ്യുകയും ഉപയോക്തൃ-സൗഹൃദ പ്രതികരണം ക്ലയൻ്റിലേക്ക് തിരികെ അയയ്ക്കുകയും ചെയ്യുന്നു. ഉദാഹരണത്തിന്, ഒരു ക്ലയൻ്റ് അസാധുവായ സൈൻഅപ്പ് ഡാറ്റ അയയ്‌ക്കുകയാണെങ്കിൽ, ഒരു ക്രിപ്‌റ്റിക് സെർവർ പിശക് സന്ദേശത്തിനുപകരം ക്ലയൻ്റിലേക്ക് “അസാധുവായ ഉപയോക്തൃ ഡാറ്റ” പോലുള്ള ഒരു സന്ദേശം അയയ്‌ക്കുമ്പോൾ ഞങ്ങളുടെ പിശക് മിഡിൽവെയർ പ്രശ്‌നം സെർവർ സൈഡ് ലോഗ് ചെയ്യും. ഇത് ഒരു പ്രൊഫഷണൽ API പ്രതികരണ ഘടന നിലനിർത്താനും സെൻസിറ്റീവ് പിശക് വിശദാംശങ്ങൾ വെളിപ്പെടുത്തുന്നതിൽ നിന്ന് സംരക്ഷിക്കാനും സഹായിക്കുന്നു. പുതിയ ഡെവലപ്പർമാർക്ക്, ഇത്തരം മിഡിൽവെയറുകൾ പിശക് മാനേജ്മെൻ്റിനെ കേന്ദ്രീകൃതമാക്കുന്നതിനാൽ സഹായകരമാണ്, പ്രത്യേകിച്ച് ഒരു ആപ്പ് സ്കെയിൽ ചെയ്യുമ്പോൾ.

പരിശോധനയ്ക്കായി, സൊല്യൂഷൻ 4 ജെസ്റ്റും സൂപ്പർടെസ്റ്റും ഉപയോഗിച്ച് യൂണിറ്റ് ടെസ്റ്റുകൾ അവതരിപ്പിച്ചു. ഡെവലപ്പർമാരെ വേഗത്തിൽ ടെസ്റ്റുകൾ എഴുതാനും പ്രവർത്തിപ്പിക്കാനും സഹായിക്കുന്ന ഒരു ജനപ്രിയ ടെസ്റ്റിംഗ് ചട്ടക്കൂടാണ് ജെസ്റ്റ്. മറുവശത്ത്, സൂപ്പർടെസ്റ്റ് ഞങ്ങളുടെ എക്സ്പ്രസ് സെർവറിലേക്കുള്ള HTTP അഭ്യർത്ഥനകളെ അനുകരിക്കുന്നു, ഇത് ഓരോ റൂട്ടും ഒറ്റപ്പെട്ട നിലയിൽ പരീക്ഷിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു. /സൈൻഅപ്പ് പോലുള്ള റൂട്ടുകളിലേക്ക് അഭ്യർത്ഥനകൾ അയയ്‌ക്കുന്നതിലൂടെ, ഞങ്ങളുടെ അസിൻക് പിശക് കൈകാര്യം ചെയ്യൽ ശരിയായി പ്രവർത്തിക്കുന്നുണ്ടെന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു, സാധുതയുള്ളതും അസാധുവായതുമായ ഇൻപുട്ടിനോട് സെർവർ പ്രതീക്ഷിക്കുന്നത് പോലെ പ്രതികരിക്കുന്നുവെന്ന് സ്ഥിരീകരിക്കുന്നു. ഉദാഹരണത്തിന്, നഷ്‌ടമായ ഫീൽഡുകളുള്ള സൈൻഅപ്പ് അഭ്യർത്ഥന 400 സ്റ്റാറ്റസ് നൽകുന്നു, മൂല്യനിർണ്ണയ കോഡ് ഫലപ്രദമാണെന്ന് തെളിയിക്കുന്ന പരിശോധനകൾ ഉറപ്പാക്കുന്നു. ആപ്പിൻ്റെ പെരുമാറ്റം പ്രതീക്ഷിക്കുന്ന മാനദണ്ഡങ്ങൾ പാലിക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുമ്പോൾ കോഡ് ഗുണനിലവാരം നിലനിർത്തുന്നതിനുള്ള ശക്തമായ മാർഗം ഈ സജ്ജീകരണം നൽകുന്നു.

മൊത്തത്തിൽ, asyncHandler, ഇഷ്‌ടാനുസൃത പിശക് മിഡിൽവെയർ, ജെസ്റ്റും സൂപ്പർടെസ്റ്റും ഉപയോഗിച്ചുള്ള ടെസ്റ്റിംഗ് എന്നിവയുടെ സംയോജനം ടൈപ്പ്സ്ക്രിപ്റ്റിൽ ശക്തമായ ഒരു ബാക്കെൻഡ് സൃഷ്ടിക്കുന്നു. ഈ സജ്ജീകരണം കോഡ് ഗുണനിലവാരം മെച്ചപ്പെടുത്തുക മാത്രമല്ല ഉപയോക്തൃ അഭ്യർത്ഥനകൾ കൈകാര്യം ചെയ്യുമ്പോൾ സെർവറിൻ്റെ വിശ്വാസ്യത വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു. ഉപയോക്തൃ പ്രാമാണീകരണ സംവിധാനങ്ങൾ പോലെ, അസിൻക് ഫംഗ്ഷനുകൾ വ്യാപകമായി ഉപയോഗിക്കുന്ന പ്രോജക്റ്റുകളിൽ, പിശകുകൾ അനിവാര്യമായും സംഭവിക്കുമ്പോൾ പോലും, സ്ഥിരത നിലനിർത്താനും സ്ഥിരമായ ഉപയോക്തൃ അനുഭവം നൽകാനും ഈ രീതികൾ സഹായിക്കുന്നു. ടൈപ്പ്സ്ക്രിപ്റ്റിൻ്റെ കർശനമായ ടൈപ്പ്-ചെക്കിംഗും ഈ ഹാൻഡ്ലിംഗ് ടെക്നിക്കുകളും ഉപയോഗിച്ച്, ഒപ്റ്റിമൈസ് ചെയ്തതും പിശക് പ്രതിരോധിക്കുന്നതുമായ കോഡ് വിന്യസിക്കുന്നതിൽ ഡെവലപ്പർമാർ ആത്മവിശ്വാസം നേടുന്നു. 🚀

പരിഹാരം 1: ടൈപ്പ് ഡിക്ലറേഷൻ അഡ്ജസ്റ്റ്‌മെൻ്റിനൊപ്പം ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ് അസിൻക് ഫംഗ്‌ഷൻ പിശക് പരിഹരിക്കുന്നു

REST API റൂട്ടിംഗിനായി ടൈപ്പ്സ്‌ക്രിപ്റ്റും എക്‌സ്‌പ്രസ്സും ഉപയോഗിച്ച് ബാക്കെൻഡ്

// Import necessary modules from Express and custom controller
import express, { Request, Response, NextFunction } from 'express';
import { signup, login, logout } from '../controllers/auth.controller.js';
// Initialize Router
const authRoute = express.Router();
// Define route for user signup
authRoute.post("/signup", (req: Request, res: Response, next: NextFunction) => {
    signup(req, res).catch(next);
});
// Define routes for login and logout
authRoute.post("/login", (req: Request, res: Response, next: NextFunction) => {
    login(req, res).catch(next);
});
authRoute.post("/logout", (req: Request, res: Response, next: NextFunction) => {
    logout(req, res).catch(next);
});
// Export the router for use in server file
export default authRoute;

പരിഹാരം 2: ഒരു ഗ്ലോബൽ അസിൻക് റാപ്പർ ഉപയോഗിച്ച് പിശക് കൈകാര്യം ചെയ്യൽ മെച്ചപ്പെടുത്തുന്നു

ഒരു ഹെൽപ്പർ റാപ്പർ ഉപയോഗിച്ച് എക്സ്പ്രസ് റൂട്ടുകൾക്കായി മെച്ചപ്പെടുത്തിയ പിശക് കൈകാര്യം ചെയ്യൽ

// Import required modules
import express, { Request, Response, NextFunction } from 'express';
import { signup, login, logout } from '../controllers/auth.controller.js';
// Utility function to wrap async route handlers for cleaner error handling
const asyncHandler = (fn: Function) => (req: Request, res: Response, next: NextFunction) => {
    Promise.resolve(fn(req, res, next)).catch(next);
};
// Initialize Express Router
const authRoute = express.Router();
// Apply asyncHandler for all routes
authRoute.post("/signup", asyncHandler(signup));
authRoute.post("/login", asyncHandler(login));
authRoute.post("/logout", asyncHandler(logout));
// Export route module for integration
export default authRoute;

പരിഹാരം 3: ഇഷ്‌ടാനുസൃത പിശക് മിഡിൽവെയറും ടൈപ്പ്സ്ക്രിപ്റ്റ്-നിർദ്ദിഷ്ട പിശക് റെസല്യൂഷനും

കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലുകൾ നിയന്ത്രിക്കാൻ ഇഷ്‌ടാനുസൃത പിശക് മിഡിൽവെയർ പ്രകടിപ്പിക്കുക

// Import Express and required modules
import express, { Request, Response, NextFunction } from 'express';
import { signup, login, logout } from '../controllers/auth.controller.js';
// Define async route handler function
const asyncRoute = (fn: Function) => (req: Request, res: Response, next: NextFunction) => {
    fn(req, res, next).catch((error: unknown) => {
        if (error instanceof Error) {
            console.error("Error in route:", error.message);
        }
        next(error);
    });
};
// Initialize router
const authRoute = express.Router();
// Attach async routes with enhanced error logging
authRoute.post("/signup", asyncRoute(signup));
authRoute.post("/login", asyncRoute(login));
authRoute.post("/logout", asyncRoute(logout));
// Middleware for handling errors across routes
const errorHandler = (err: Error, req: Request, res: Response, next: NextFunction) => {
    res.status(500).json({ message: "Internal server error", error: err.message });
};
export default authRoute;

പരിഹാരം 4: റൂട്ടിൻ്റെ പ്രവർത്തനക്ഷമത പരിശോധിക്കുന്നതിനുള്ള യൂണിറ്റ് പരിശോധന

അസിൻക് ഹാൻഡ്‌ലിംഗ് പരിശോധിക്കാൻ ജെസ്റ്റ് ഫോർ എക്സ്പ്രസ് റൂട്ടുകൾ ഉപയോഗിച്ച് പരീക്ഷിക്കുന്നു

// Import required testing libraries
import request from 'supertest';
import app from '../app'; 

describe("Auth Routes Test Suite", () => {
    test("Signup route should create a new user", async () => {
        const response = await request(app)
            .post("/api/auth/signup")
            .send({
                fullName: "Test User",
                username: "testuser",
                password: "testpass",
                confirmPassword: "testpass",
                gender: "male"
            });
        expect(response.status).toBe(201);
        expect(response.body).toHaveProperty("id");
    });
    test("Signup with invalid data should return 400 error", async () => {
        const response = await request(app)
            .post("/api/auth/signup")
            .send({ username: "testuser" });
        expect(response.status).toBe(400);
        expect(response.body).toHaveProperty("error");
    });
});

സങ്കീർണ്ണമായ റൂട്ടിംഗ് സിസ്റ്റങ്ങളിൽ ടൈപ്പ്സ്ക്രിപ്റ്റ് അസിൻക് പ്രശ്നങ്ങൾ കൈകാര്യം ചെയ്യുന്നു

ടൈപ്പ്സ്ക്രിപ്റ്റിൽ ഒരു ഫുൾ-സ്റ്റാക്ക് ആപ്ലിക്കേഷൻ നിർമ്മിക്കുമ്പോൾ, കർശനമായ ടൈപ്പിംഗ് ആവശ്യകതകളും സങ്കീർണ്ണമായ പിശക് കൈകാര്യം ചെയ്യലും കാരണം അസിൻക് ഫംഗ്ഷനുകളിലെ പ്രശ്നങ്ങൾ പ്രത്യേകിച്ചും വെല്ലുവിളി നിറഞ്ഞതാണ്. ഉദാഹരണത്തിന്, ഒരു എക്‌സ്‌പ്രസ് സെർവറിൽ അസിൻക് റൂട്ടുകൾ സംയോജിപ്പിക്കുന്നത് ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ്-നിർദ്ദിഷ്ട പ്രശ്‌നങ്ങൾക്ക് കാരണമാകും, പ്രത്യേകിച്ചും വിവിധ ഫംഗ്ഷനുകളിലുടനീളം പിശകുകൾ ശരിയായി കൈകാര്യം ചെയ്യുമ്പോൾ. ഡാറ്റാബേസ് അന്വേഷണങ്ങൾ അല്ലെങ്കിൽ API അഭ്യർത്ഥനകൾ പോലുള്ള അസിൻക് ഫംഗ്‌ഷനുകൾ ഒരു ക്യാച്ച് ബ്ലോക്ക് ഇല്ലാതെ നിരസിക്കുമ്പോൾ പല ഡവലപ്പർമാരും പ്രശ്നങ്ങൾ നേരിടുന്നു. ഇത് കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലുകളിൽ കലാശിക്കുന്നു, പിശക് സുരക്ഷയിൽ ഊന്നൽ നൽകുന്നതിനാൽ ടൈപ്പ്സ്ക്രിപ്റ്റ് ഗുരുതരമായ പിശകുകളായി ഫ്ലാഗ് ചെയ്യുന്നു. ഈ പിശകുകൾ മറികടക്കുന്നതിനുപകരം, അവ ഫലപ്രദമായി കൈകാര്യം ചെയ്യാൻ പഠിക്കുന്നത് പ്രതിരോധശേഷിയുള്ള ആപ്പുകൾ നിർമ്മിക്കുന്നതിന് നിർണായകമാണ്.

ആവർത്തനമില്ലാതെ ഒന്നിലധികം അസിൻക് ഫംഗ്ഷനുകളെ പിന്തുണയ്ക്കുന്ന ഒരു റൂട്ട് ആർക്കിടെക്ചർ രൂപകൽപ്പന ചെയ്യുക എന്നതാണ് മറ്റൊരു നിർണായക വശം. ഉദാഹരണത്തിന്, അസിൻക് ഫംഗ്‌ഷനുകൾ പൊതിയുന്നതിനായി ഇഷ്‌ടാനുസൃത മിഡിൽവെയർ സൃഷ്‌ടിക്കുന്നത് ഡെവലപ്പർമാരെ പിശക് കൈകാര്യം ചെയ്യൽ കേന്ദ്രീകരിക്കാൻ അനുവദിക്കുന്നു, ഇത് കോഡ് ക്ലീനറും കൂടുതൽ മോഡുലാർ ആക്കുന്നു. വിവിധ റൂട്ടുകൾ ഉപയോക്തൃ പ്രാമാണീകരണം, CRUD പ്രവർത്തനങ്ങൾ എന്നിവ പോലുള്ള സമാന പ്രവർത്തനങ്ങൾ നടത്തുന്ന പ്രോജക്റ്റുകളിൽ അസിൻക് ഫംഗ്ഷനുകൾ കൈകാര്യം ചെയ്യുന്ന മിഡിൽവെയർ ഫംഗ്ഷനുകൾ പ്രത്യേകിച്ചും സഹായകരമാണ്. പോലുള്ള ഒരു ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് പിശകുകൾ കേന്ദ്രീകൃതമായി കൈകാര്യം ചെയ്യുന്നതിലൂടെ , അസിൻക് പ്രക്രിയകളിലെ ഏതെങ്കിലും പിശകുകൾ ഒരു ഗ്ലോബൽ എറർ ഹാൻഡ്‌ലറിന് കൈമാറുന്നുവെന്ന് ഉറപ്പാക്കുമ്പോൾ ഡവലപ്പർമാർക്ക് ആവർത്തന കോഡ് കുറയ്ക്കാൻ കഴിയും.

ടൈപ്പ്സ്ക്രിപ്റ്റ് ആപ്ലിക്കേഷനുകളിൽ അസിൻക് റൂട്ടുകൾ പരിശോധിക്കുന്നതും അത്യാവശ്യമാണ്. Jest, Supertest പോലുള്ള ടൂളുകൾ ഉപയോഗിച്ച് യൂണിറ്റ് ടെസ്റ്റുകൾ നടപ്പിലാക്കുന്നത് ഡെവലപ്പർമാരെ വ്യത്യസ്ത പിശക് സാഹചര്യങ്ങൾ അനുകരിക്കാൻ അനുവദിക്കുന്നു, ഒന്നിലധികം പരിതസ്ഥിതികളിൽ അസിൻക് റൂട്ടുകൾ ശരിയായി പ്രതികരിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. ഡാറ്റാബേസ് റീഡും റൈറ്റും പോലുള്ള അസിൻക് ഓപ്പറേഷനുകൾ ഉൾപ്പെടുന്ന റൂട്ടുകൾ പരിശോധിക്കുന്നത് റൺടൈം പിശകുകൾ തടയാനും എല്ലാ എഡ്ജ് കേസുകളും കൈകാര്യം ചെയ്യപ്പെടുന്നു എന്ന ആത്മവിശ്വാസം വളർത്താനും സഹായിക്കുന്നു. പുതിയ ഫീച്ചറുകൾ പുറത്തിറക്കുമ്പോഴോ കോഡ് റീഫാക്‌ടറിംഗ് ചെയ്യുമ്പോഴോ ഈ ഘടനാപരമായ പരിശോധനാ സമീപനം പ്രധാനമാണ്. ഓരോ റൂട്ടും പൂർണ്ണമായി പരീക്ഷിക്കുന്നതിലൂടെ, നിങ്ങൾ സാധ്യമായ പിശകുകൾ കണ്ടെത്തുക മാത്രമല്ല, വിവിധ ഇൻപുട്ടുകൾക്ക് കീഴിൽ ഉദ്ദേശിച്ചതുപോലെ പിശക് കൈകാര്യം ചെയ്യുന്നുവെന്ന് സ്ഥിരീകരിക്കുകയും ചെയ്യുന്നു. 🔄 ഇത് സ്ഥിരമായ ഉപയോക്തൃ അനുഭവം ഉറപ്പാക്കുന്നു, പിശകുകൾ സംഭവിക്കുമ്പോൾ പോലും, അപ്ലിക്കേഷന് കൂടുതൽ ശക്തമായ പ്രകടനം നൽകുന്നു.

  1. ടൈപ്പ്‌സ്‌ക്രിപ്റ്റിൽ കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലിന് കാരണമാകുന്നത് എന്താണ്?
  2. ഒരു അസിൻക് ഫംഗ്‌ഷൻ a ഉപയോഗിച്ച് പിടിക്കപ്പെടാത്ത ഒരു പിശക് എറിയുമ്പോൾ കൈകാര്യം ചെയ്യാത്ത വാഗ്ദാന നിരസിക്കലുകൾ സംഭവിക്കുന്നു അല്ലെങ്കിൽ a ഉള്ളിൽ തടയുക. സെർവർ ക്രാഷുകൾക്ക് കാരണമായേക്കാവുന്ന നിശബ്ദ പരാജയങ്ങൾ തടയാൻ ടൈപ്പ്സ്ക്രിപ്റ്റ് ഈ പിശകുകൾ ഫ്ലാഗ് ചെയ്യുന്നു.
  3. എങ്ങനെ കഴിയും അസിൻക് പിശകുകൾ നിയന്ത്രിക്കാൻ സഹായിക്കണോ?
  4. അസിൻക് റൂട്ട് ഹാൻഡ്‌ലറുകളിലെ പിശകുകൾ കണ്ടെത്തി അവയെ പിശക് കൈകാര്യം ചെയ്യുന്ന മിഡിൽവെയറിലേക്ക് കൈമാറുന്ന ഒരു റാപ്പർ ഫംഗ്‌ഷൻ ആണ്. ഇത് പിശക് മാനേജുമെൻ്റ് കേന്ദ്രീകരിക്കുന്നു, ആപ്പ് ക്രാഷുകൾക്ക് കാരണമാകുന്നതിൽ നിന്ന് അസിൻക് പിശകുകൾ തടയുന്നു.
  5. എന്തുകൊണ്ടാണ് ടൈപ്പ്സ്ക്രിപ്റ്റ് അസിൻക് പിശക് കൈകാര്യം ചെയ്യുന്നതിൽ കർശനമായിരിക്കുന്നത്?
  6. ടൈപ്പ്സ്ക്രിപ്റ്റിൻ്റെ കർശനമായ ടൈപ്പിംഗ് സിസ്റ്റം ആപ്പുകൾ സുരക്ഷിതവും കൂടുതൽ വിശ്വസനീയവുമാക്കാൻ ലക്ഷ്യമിടുന്നു. അസിൻക് ഫംഗ്ഷനുകളിൽ പിശക് കൈകാര്യം ചെയ്യുന്നതിലൂടെ, അപ്രതീക്ഷിതമായി പരാജയപ്പെടാൻ സാധ്യതയുള്ള കൂടുതൽ പ്രതിരോധശേഷിയുള്ള കോഡ് എഴുതാൻ ടൈപ്പ്സ്ക്രിപ്റ്റ് ഡെവലപ്പർമാരെ സഹായിക്കുന്നു.
  7. എന്താണ് ഒരു ഇഷ്‌ടാനുസൃത പിശക് മിഡിൽവെയർ, എന്തുകൊണ്ടാണ് ഇത് ഉപയോഗിക്കുന്നത്?
  8. എക്സ്പ്രസിലെ ഒരു ഇഷ്‌ടാനുസൃത പിശക് മിഡിൽവെയർ ഫംഗ്‌ഷൻ പിശകുകൾ പ്രോസസ്സ് ചെയ്യുകയും ക്ലയൻ്റുകൾക്ക് ഘടനാപരമായ പ്രതികരണങ്ങൾ അയയ്ക്കുകയും ചെയ്യുന്നു. വ്യക്തമായ പിശക് സന്ദേശങ്ങൾ നൽകുന്നതിനും സെൻസിറ്റീവ് പിശക് വിവരങ്ങളൊന്നും വെളിപ്പെടുത്തുന്നില്ലെന്ന് ഉറപ്പാക്കുന്നതിനും ഇത് പ്രയോജനകരമാണ്.
  9. എങ്ങനെ ചെയ്യുന്നു അസിൻക് റൂട്ടുകൾ പരിശോധിക്കുന്നതിനായി പ്രവർത്തിക്കുന്നുണ്ടോ?
  10. ഒരു തത്സമയ സെർവർ പ്രവർത്തിപ്പിക്കാതെ തന്നെ റൂട്ടുകൾ പരിശോധിക്കുന്നതിനുള്ള HTTP അഭ്യർത്ഥനകൾ അനുകരിക്കുന്നു. റൂട്ട് പ്രതികരണങ്ങൾ പരിശോധിക്കുന്നതിന് ഇത് മികച്ചതാക്കുന്നു, വ്യത്യസ്ത പരിതസ്ഥിതികളിൽ അസിൻക് പിശക് കൈകാര്യം ചെയ്യുന്നുവെന്ന് പരിശോധിച്ചുറപ്പിക്കുന്നു.
  11. എൻ്റെ സെർവർ തകരാറിലാകുന്നതിൽ നിന്ന് എനിക്ക് എങ്ങനെ അസിൻക് ഫംഗ്‌ഷനുകൾ തടയാനാകും?
  12. അസിൻക് ഫംഗ്‌ഷനുകൾ പൊതിയുന്നു തടയുന്നു അല്ലെങ്കിൽ മിഡിൽവെയർ ഉപയോഗിക്കുന്നത് കൈകാര്യം ചെയ്യാത്ത തിരസ്കരണങ്ങളെ തടയുന്നു. സെർവർ ക്രാഷ് ചെയ്യുന്നതിന് മുമ്പ് ഇത് പിശകുകൾ പിടിക്കുന്നു.
  13. എന്താണ് ചെയ്യുന്നത് പിശക് കൈകാര്യം ചെയ്യുന്നതിൽ ചെയ്യണോ?
  14. അസിൻക് ഫംഗ്‌ഷനുകൾ പൊതിയാൻ ഉപയോഗിക്കുന്നു, പിശകുകൾ ഉടനടി പിടിക്കാൻ അനുവദിക്കുന്നു. അധികമില്ലാതെ പിശകുകൾ കൈകാര്യം ചെയ്യാൻ മിഡിൽവെയറിൽ ഇത് പലപ്പോഴും ഉപയോഗിക്കുന്നു ബ്ലോക്കുകൾ.
  15. എന്താണ് ഉദ്ദേശം ടൈപ്പ്സ്ക്രിപ്റ്റ് പ്രോജക്റ്റുകളിൽ?
  16. ഡവലപ്പർമാരെ വേഗത്തിൽ ടെസ്റ്റുകൾ എഴുതാനും പ്രവർത്തിപ്പിക്കാനും അനുവദിക്കുന്ന ഒരു ടെസ്റ്റിംഗ് ചട്ടക്കൂടാണ്. പ്രതീക്ഷിക്കുന്ന ഔട്ട്‌പുട്ടുകളും പിശക് കൈകാര്യം ചെയ്യലും പരിശോധിച്ച് അസിൻക് റൂട്ടുകൾ ശരിയായി പ്രവർത്തിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ ഇത് സഹായിക്കുന്നു.
  17. മോഡുലാർ പിശക് കൈകാര്യം ചെയ്യുന്നത് പ്രധാനമായിരിക്കുന്നത് എന്തുകൊണ്ട്?
  18. മോഡുലാർ പിശക് കൈകാര്യം ചെയ്യുന്നത് ആവർത്തന കോഡ് തടയുകയും അറ്റകുറ്റപ്പണി ലളിതമാക്കുകയും ചെയ്യുന്നു. പിശക് കൈകാര്യം ചെയ്യൽ കേന്ദ്രീകരിക്കുന്നതിലൂടെ, എല്ലാ റൂട്ടുകളിലും സ്ഥിരമായ പിശക് പ്രതികരണങ്ങൾ ഉണ്ടെന്ന് നിങ്ങൾ ഉറപ്പാക്കുന്നു, ഇത് സങ്കീർണ്ണമായ പ്രോജക്റ്റുകളിൽ അത്യന്താപേക്ഷിതമാണ്.
  19. ഉപയോഗിക്കുന്നത് ശരിയാണോ ടൈപ്പ്സ്ക്രിപ്റ്റ് പിശകുകൾ മറികടക്കാൻ?
  20. ഉപയോഗിക്കുന്നത് ടൈപ്പ്സ്ക്രിപ്റ്റ് പിശകുകൾ മറികടക്കാൻ കഴിയും, എന്നാൽ ദീർഘകാലത്തേക്ക് ശുപാർശ ചെയ്യുന്നില്ല. പിശകുകൾ നേരിട്ട് പരിഹരിക്കുന്നതാണ് നല്ലത്, കാരണം അവ അവഗണിക്കുന്നത് പിന്നീട് വികസനത്തിൽ കൈകാര്യം ചെയ്യാത്ത പ്രശ്‌നങ്ങളിലേക്ക് നയിച്ചേക്കാം.

ടൈപ്പ്സ്ക്രിപ്റ്റ് ആപ്ലിക്കേഷനുകളിൽ, എക്സ്പ്രസ് റൂട്ടുകളിലെ അസിൻക് പിശകുകൾ കൈകാര്യം ചെയ്യുന്നത് വിശ്വസനീയവും ഉപയോക്തൃ-സൗഹൃദവുമായ ബാക്കെൻഡുകൾ നിർമ്മിക്കുന്നതിന് നിർണായകമാണ്. കേന്ദ്രീകൃത പിശക് കൈകാര്യം ചെയ്യൽ, മിഡിൽവെയറുകളുമായും സഹായികളുമായും ജോടിയാക്കിയത്, കൈകാര്യം ചെയ്യാത്ത നിരസിക്കലുകൾ കാരണം അപ്രതീക്ഷിത സെർവർ ക്രാഷുകൾ തടയുന്നു. 🛠️

ഓരോ അസിൻക് റൂട്ടും സ്ഥിരമായി പിശകുകൾ കൈകാര്യം ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നതിൽ പരിശോധന നിർണായക പങ്ക് വഹിക്കുന്നു, ഇത് നിങ്ങളുടെ കോഡ്ബേസ് കൂടുതൽ ശക്തമാക്കുന്നു. ജെസ്റ്റ്, സൂപ്പർടെസ്റ്റ് ടെസ്റ്റിംഗ് എന്നിവയുൾപ്പെടെയുള്ള ഈ സാങ്കേതിക വിദ്യകൾ, ഭാവി വികസനത്തിന് ശക്തമായ അടിത്തറ നൽകിക്കൊണ്ട്, അസിൻക് സങ്കീർണതകൾ ആത്മവിശ്വാസത്തോടെ കൈകാര്യം ചെയ്യാൻ ഡെവലപ്പർമാരെ സഹായിക്കുന്നു. 🚀

  1. ഇതുമായി ബന്ധപ്പെട്ട ഡോക്യുമെൻ്റേഷനും ഗൈഡുകളും ഈ ലേഖനം പ്രചോദിപ്പിച്ചതാണ് ഒപ്പം പിശക് കൈകാര്യം ചെയ്യുന്നതിനുള്ള മികച്ച രീതികൾ. എക്‌സ്‌പ്രസ് റൂട്ടുകളിലെ അസിൻക് ഫംഗ്‌ഷനുകൾ കൈകാര്യം ചെയ്യുന്നതിനെക്കുറിച്ചുള്ള വിശദമായ വിവരങ്ങൾ ഉറവിടത്തിൽ നിന്നാണ് Express.js ഔദ്യോഗിക ഡോക്യുമെൻ്റേഷൻ .
  2. അസിൻക് ഫംഗ്‌ഷൻ കൈകാര്യം ചെയ്യുന്നതിനും ടൈപ്പ്‌സ്‌ക്രിപ്റ്റ് സജ്ജീകരണത്തിനുമുള്ള അധിക മാർഗ്ഗനിർദ്ദേശം ഇതിൽ നിന്ന് പരാമർശിച്ചു ടൈപ്പ്സ്ക്രിപ്റ്റ് ഡോക്യുമെൻ്റേഷൻ , ഇത് വാഗ്ദാന നിരസിക്കലുകൾ കൈകാര്യം ചെയ്യുന്നതിനും ടൈപ്പ്സ്ക്രിപ്റ്റ് പ്രോജക്റ്റുകൾ ക്രമീകരിക്കുന്നതിനും ആഴത്തിലുള്ള വിശദീകരണങ്ങൾ നൽകുന്നു.
  3. എക്‌സ്‌പ്രസ് റൂട്ടുകൾക്കായുള്ള ടെസ്റ്റിംഗ് രീതികളും യൂണിറ്റ് ടെസ്റ്റ് ഉദാഹരണങ്ങളും ഉള്ളടക്കത്തിൽ നിന്ന് പ്രചോദനം ഉൾക്കൊണ്ടതാണ് ജെസ്റ്റിൻ്റെ ഔദ്യോഗിക ഡോക്യുമെൻ്റേഷൻ , റൂട്ട് പെരുമാറ്റങ്ങൾ പരിശോധിക്കാൻ ഘടനാപരമായ സമീപനങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു.
  4. പോലുള്ള ഉപകരണങ്ങൾ ഉൾപ്പെടെ പ്രോജക്റ്റ് സജ്ജീകരണം ഒപ്പം , ന് പ്രായോഗിക ഗൈഡുകളിൽ നിന്ന് പരാമർശിച്ചു ഡിജിറ്റൽ ഓഷ്യൻ ട്യൂട്ടോറിയലുകൾ , ടൈപ്പ്സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് Node.js-ലെ ഫലപ്രദമായ വികസന സജ്ജീകരണങ്ങൾ ചിത്രീകരിക്കുന്നു.