**What**: These changes ensure that we work more tightly with React that can also result in unforeseen performance boosts. In case we would decide on expanding to other libraries/frameworks, a new file per framework could be added. **Why**: Some performance issues (https://github.com/nextauthjs/next-auth/issues/844) could only be fixed by moving more of the client code into the `Provider`. **How**: Refactoring `next-auth/client` Related: #1461, #1084, #1462 BREAKING CHANGE: **1.** `next-auth/client` is renamed to `next-auth/react`. **2.** In the past, we exposed most of the functions with different names for convenience. To simplify our source code, the new React specific client code exports only the following functions, listed with the necessary changes: - `setOptions`: Not exposed anymore, use `SessionProvider` props - `options`: Not exposed anymore, use `SessionProvider` props - `session`: Rename to `getSession` - `providers`: Rename to `getProviders` - `csrfToken`: Rename to `getCsrfToken` - `signin`: Rename to `signIn` - `signout`: Rename to `signOut` - `Provider`: Rename to `SessionProvider` **3.** `Provider` changes. - `Provider` is renamed to `SessionProvider` - The `options` prop is now flattened as the props of `SessionProvider`. - `clientMaxAge` has been renamed to `staleTime`. - `keepAlive` has been renamed to `refetchInterval`. An example of the changes: ```diff - <Provider options={{clientMaxAge: 0, keepAlive: 0}}>{children}</Provider> + <SessionProvider staleTime={0} refetchInterval={0}>{children}</SessionProvider> ``` **4.** It is now **required** to wrap the part of your application that uses `useSession` into a `SessionProvider`. Usually, the best place for this is in your `pages/_app.jsx` file: ```jsx import { SessionProvider } from "next-auth/react" export default function App({ Component, pageProps: { session, ...pageProps } }) { return ( // `session` comes from `getServerSideProps` or `getInitialProps`. // Avoids flickering/session loading on first load. <SessionProvider session={session}> <Component {...pageProps} /> </SessionProvider> ) } ```
4.1 KiB
id, title
| id | title |
|---|---|
| errors | Errors |
This is a list of errors output from NextAuth.js.
All errors indicate an unexpected problem, you should not expect to see errors.
If you are seeing any of these errors in the console, something is wrong.
Client
These errors are returned from the client. As the client is Universal JavaScript (or "Isomorphic JavaScript") it can be run on the client or server, so these errors can occur in both in the terminal and in the browser console.
CLIENT_SESSION_ERROR
This error occurs when the SessionProvider Context has a problem fetching session data.
CLIENT_FETCH_ERROR
If you see CLIENT_FETCH_ERROR make sure you have configured the NEXTAUTH_URL environment variable.
Server
These errors are displayed on the terminal.
OAuth
OAUTH_GET_ACCESS_TOKEN_ERROR
OAUTH_V1_GET_ACCESS_TOKEN_ERROR
OAUTH_GET_PROFILE_ERROR
OAUTH_PARSE_PROFILE_ERROR
OAUTH_CALLBACK_HANDLER_ERROR
Signin / Callback
GET_AUTHORIZATION_URL_ERROR
SIGNIN_OAUTH_ERROR
CALLBACK_OAUTH_ERROR
SIGNIN_EMAIL_ERROR
CALLBACK_EMAIL_ERROR
EMAIL_REQUIRES_ADAPTER_ERROR
The Email authentication provider can only be used if a database is configured.
CALLBACK_CREDENTIALS_JWT_ERROR
The Credentials Provider can only be used if JSON Web Tokens are used for sessions.
JSON Web Tokens are used for Sessions by default if you have not specified a database. However if you are using a database, then Database Sessions are enabled by default and you need to explicitly enable JWT Sessions to use the Credentials Provider.
If you are using a Credentials Provider, NextAuth.js will not persist users or sessions in a database - user accounts used with the Credentials Provider must be created and managed outside of NextAuth.js.
In most cases it does not make sense to specify a database in NextAuth.js options and support a Credentials Provider.
CALLBACK_CREDENTIALS_HANDLER_ERROR
PKCE_ERROR
The provider you tried to use failed when setting PKCE or Proof Key for Code Exchange.
The code_verifier is saved in a cookie called (by default) __Secure-next-auth.pkce.code_verifier which expires after 15 minutes.
Check if cookies.pkceCodeVerifier is configured correctly. The default code_challenge_method is "S256". This is currently not configurable to "plain", as it is not recommended, and in most cases it is only supported for backward compatibility.
Session Handling
JWT_SESSION_ERROR
https://next-auth.js.org/errors#jwt_session_error JWKKeySupport: the key does not support HS512 verify algorithm
The algorithm used for generating your key isn't listed as supported. You can generate a HS512 key using
jose newkey -s 512 -t oct -a HS512
If you are unable to use an HS512 key (for example to interoperate with other services) you can define what is supported using
jwt: {
signingKey: {"kty":"oct","kid":"--","alg":"HS256","k":"--"},
verificationOptions: {
algorithms: ["HS256"]
}
}
SESSION_ERROR
Signout
SIGNOUT_ERROR
Database
These errors are logged by the TypeORM Adapter, which is the default database adapter.
They all indicate a problem interacting with the database.
ADAPTER_CONNECTION_ERROR
CREATE_USER_ERROR
GET_USER_BY_ID_ERROR
GET_USER_BY_EMAIL_ERROR
GET_USER_BY_PROVIDER_ACCOUNT_ID_ERROR
LINK_ACCOUNT_ERROR
CREATE_SESSION_ERROR
GET_SESSION_ERROR
UPDATE_SESSION_ERROR
DELETE_SESSION_ERROR
CREATE_VERIFICATION_REQUEST_ERROR
GET_VERIFICATION_REQUEST_ERROR
DELETE_VERIFICATION_REQUEST_ERROR
Other
SEND_VERIFICATION_EMAIL_ERROR
This error occurs when the Email Authentication Provider is unable to send an email.
Check your mail server configuration.
MISSING_NEXTAUTH_API_ROUTE_ERROR
This error happens when [...nextauth].js file is not found inside pages/api/auth.
Make sure the file is there and the filename is written correctly.