എന്റെ Next.js Auth Matcher മൂന്ന് തവണ ഞാൻ തെറ്റിച്ചു
Next.js 16-ൽ proxy.ts എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നതെന്ന് മനസ്സിലാക്കുന്നതിന് മുമ്പ് ഞാൻ മൂന്ന് പ്രോജക്റ്റുകൾ തകരാറിലാക്കി.
ആ പിശക് നിശബ്ദമായിരുന്നു. ലോഗുകളില്ല. മുന്നറിയിപ്പുകളില്ല. എററുകളില്ല. കേവലം തകരാറിലായ റീഡയറക്റ്റുകളും (redirects) സുരക്ഷാ വീഴ്ചകളും മാത്രം.
നിങ്ങൾ Next.js 16-ലേക്ക് അപ്ഗ്രേഡ് ചെയ്യുകയാണെങ്കിൽ, വെറുതെ ഒരു codemod റൺ ചെയ്ത് വിട്ടുപോകരുത്. നിങ്ങൾ ഈ മൂന്ന് കാര്യങ്ങൾ പരിശോധിക്കേണ്ടതുണ്ട്.
മൈഗ്രേഷൻ കെണി (The Migration Trap)
Next.js, middleware.ts എന്നത് proxy.ts എന്ന് പുനർനാമകരണം ചെയ്തു. ഇതൊരു വെറും പേര് മാറ്റം മാത്രമല്ല.
- middleware.ts പ്രവർത്തിച്ചിരുന്നത് Edge runtime-ലായിരുന്നു. അതിന് പരിമിതമായ crypto support മാത്രമേ ഉണ്ടായിരുന്നുള്ളൂ.
- proxy.ts ഡിഫോൾട്ട് ആയി Node.js runtime-ലാണ് പ്രവർത്തിക്കുന്നത്. ഇതിന് പൂർണ്ണമായ crypto support ഉണ്ട്.
ഒരു codemod ഉപയോഗിക്കാതെ നിങ്ങൾ പാക്കേജ് മാനുവലായി അപ്ഡേറ്റ് ചെയ്യുകയാണെങ്കിൽ, നിങ്ങളുടെ പഴയ middleware.ts ഫയൽ ഇപ്പോഴും അവിടെ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്. അത് കൃത്യമായി കംപൈൽ ചെയ്യും. TypeScript ചെക്കുകൾ പാസ്സാകുകയും ചെയ്യും. എന്നാൽ അത് ഒന്നും ചെയ്യില്ല. നിങ്ങളുടെ റൂട്ടുകൾ (routes) ഇന്റർസെപ്റ്റ് (intercept) ചെയ്യപ്പെടില്ല. റീഡയറക്റ്റുകൾ പ്രവർത്തിക്കുകയുമില്ല.
ഈ മൂന്ന് കാര്യങ്ങൾ മാനുവലായി പരിശോധിക്കുക:
- proxy.ts നിങ്ങളുടെ പ്രോജക്റ്റ് റൂട്ടിൽ (project root) ഉണ്ടായി