srbhr / Resume-Matcher

Resume Matcher is an open source, free tool to improve your resume. It works by using language models to compare and rank resumes with job descriptions.
https://www.resumematcher.fyi/
Apache License 2.0
4.91k stars 2.1k forks source link

fix: nextjs ui throws exception on error ts file #208

Closed Sayvai closed 11 months ago

Sayvai commented 11 months ago

fix: Next.js UI throws exception on error.ts file

Occasionally (not all the time), whenever I start up the local frontend full stack Next.js webapp, and then attempt to load the frontend UI after the Next.js servers are up and ready, the browser displays an exception thrown by Next.js.

The exception which is occasionally thrown, throws with the error message Attempted to call getErrorMessage() from the server, but getErrorMessage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a client component..

💡 It seems that the error.ts file from which the getErrorMessage() function is defined conflicts with the reserved Next.js app router keyword for error.tsx components, and so Next.js (mistakenly) assumes error.ts is client component file, and hence why use client was placed at the top of the error.ts file in the first place to overcome the initial error. However, in hindsight this is not the correct solution as the function should be called on the server-side, and so the solution is to instead rename error.ts to errors.ts, which also makes more logical sense, and can be extended with additional error handling functions in future.

This change resolves issue #207.

Related Issue

207

Description

Type

Proposed Changes

Screenshots / Code Snippets (if applicable)

Exception message rendered on the frontend UI of the full stack Next.js web app.

screenshot of exception thrown on browser UI, with the message "Attempted to call getErrorMessage() from the server, but getErrorMessage is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a client component."

A separate and different exception message thrown by Next.js before further refactoring to remove "use client"; declaration on the previously incorrectly named error.ts file.

Next.js excpetion message thrown on a server function, where it incorrectly requested for it to be declared as a client component

How to Test

Please follow steps outlined in issue #207

Checklist

Additional Information

N/A