Initial boiler plate project
This commit is contained in:
61
node_modules/next/dist/esm/lib/format-server-error.js
generated
vendored
Normal file
61
node_modules/next/dist/esm/lib/format-server-error.js
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
const invalidServerComponentReactHooks = [
|
||||
"useDeferredValue",
|
||||
"useEffect",
|
||||
"useImperativeHandle",
|
||||
"useInsertionEffect",
|
||||
"useLayoutEffect",
|
||||
"useReducer",
|
||||
"useRef",
|
||||
"useState",
|
||||
"useSyncExternalStore",
|
||||
"useTransition",
|
||||
"experimental_useOptimistic",
|
||||
"useOptimistic"
|
||||
];
|
||||
function setMessage(error, message) {
|
||||
error.message = message;
|
||||
if (error.stack) {
|
||||
const lines = error.stack.split("\n");
|
||||
lines[0] = message;
|
||||
error.stack = lines.join("\n");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Input:
|
||||
* Error: Something went wrong
|
||||
at funcName (/path/to/file.js:10:5)
|
||||
at anotherFunc (/path/to/file.js:15:10)
|
||||
|
||||
* Output:
|
||||
at funcName (/path/to/file.js:10:5)
|
||||
at anotherFunc (/path/to/file.js:15:10)
|
||||
*/ export function getStackWithoutErrorMessage(error) {
|
||||
const stack = error.stack;
|
||||
if (!stack) return "";
|
||||
return stack.replace(/^[^\n]*\n/, "");
|
||||
}
|
||||
export function formatServerError(error) {
|
||||
if (typeof (error == null ? void 0 : error.message) !== "string") return;
|
||||
if (error.message.includes("Class extends value undefined is not a constructor or null")) {
|
||||
const addedMessage = "This might be caused by a React Class Component being rendered in a Server Component, React Class Components only works in Client Components. Read more: https://nextjs.org/docs/messages/class-component-in-server-component";
|
||||
// If this error instance already has the message, don't add it again
|
||||
if (error.message.includes(addedMessage)) return;
|
||||
setMessage(error, `${error.message}
|
||||
|
||||
${addedMessage}`);
|
||||
return;
|
||||
}
|
||||
if (error.message.includes("createContext is not a function")) {
|
||||
setMessage(error, 'createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/context-in-server-component');
|
||||
return;
|
||||
}
|
||||
for (const clientHook of invalidServerComponentReactHooks){
|
||||
const regex = new RegExp(`\\b${clientHook}\\b.*is not a function`);
|
||||
if (regex.test(error.message)) {
|
||||
setMessage(error, `${clientHook} only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=format-server-error.js.map
|
||||
Reference in New Issue
Block a user