-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Declaration TypeScript Bug in NextAuth v5 #10568
Comments
This comment has been minimized.
This comment has been minimized.
This comment was marked as off-topic.
This comment was marked as off-topic.
Yes, turn of declaration and declarationMap in your tsconfig |
- Add `next-auth` to drizzle schema in `packages/database` - Remove `declaration` and `declarationMap` due to `next-auth` type errors (see nextauthjs/next-auth#10568) - Add `auth.ts` to `apps/client/src/lib` for `next-auth` initialization and config - Add `api/auth/[...nextauth]/route.ts` to `apps/client/src/app` for `next-auth` API routes - Add `auth` route group and pages to `apps/client/src/app` for `next-auth` pages (signin, signup, verify-request) - Add `OAuthButton` and `OAuthIcon` components to `apps/client/src/app/(auth)/_components` for `next-auth` OAuth providers
- Add `next-auth` to drizzle schema in `packages/database` - Remove `declaration` and `declarationMap` due to `next-auth` type errors (see nextauthjs/next-auth#10568) - Add `auth.ts` to `apps/client/src/lib` for `next-auth` initialization and config - Add `api/auth/[...nextauth]/route.ts` to `apps/client/src/app` for `next-auth` API routes - Add `auth` route group and pages to `apps/client/src/app` for `next-auth` pages (signin, signup, verify-request) - Add `OAuthButton` and `OAuthIcon` components to `apps/client/src/app/(auth)/_components` for `next-auth` OAuth providers
Does anyone know what to do if another part of the project requires declarationMap & declaration to be set to "true"? Is this a bug in NextAuth? |
Team! please respond to this as i am also facing same issue The inferred type of 'auth' cannot be named without a reference to '@/node_modules/next-auth/lib'. This is likely not portable. A type annotation is necessary.ts(2742)
The inferred type of 'auth' cannot be named without a reference to '@/node_modules/next-auth/lib/types'. This is likely not portable. A type annotation is necessary.ts(2742)
export const { handlers:{GET, POST},signIn, signOut, auth } = NextAuth({
callbacks: {
async signIn({ user, account }) {
console.log(user);
//Allow 0Auth
if(account?.provider!=="credentials") return true
const existingUser= await getUserById(user.id!);
// prevent sign in without email verification
if(!existingUser || !existingUser.emailVerified){
return false
}
return true
},
async session({ session, token }) {
if(token.sub && session.user){
session.user.id = token.sub
}
return session
},
async jwt({ token }) {
if(!token.sub) return token
const existingUser= await getUserById(token.sub)
return token
}
},
secret: process.env.NEXTAUTH_SECRET || "secr3t",
adapter: PrismaAdapter(db),
session: { strategy: "jwt"},
...authConfig,
}) the type error comes from the auth(), but i am using turbo repo and when i remove the "extents" {
"extends": "@repo/typescript-config/nextjs.json",
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": ["./*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
} |
@shuaibu-shehu just add below lines inside the
|
sharing workaround (declarationMap & declaration to be set to "true") import NextAuth, { NextAuthResult } from "next-auth";
const nextAuth = NextAuth(authConfig);
const signIn: NextAuthResult["signIn"] = nextAuth.signIn;
const auth: NextAuthResult["auth"] = nextAuth.auth; |
It's been months and this issue is still not resolved. well in turbo-repo const nextAuth = NextAuth(authOptions);
export const auth: NextAuthResult["auth"] = nextAuth.auth;
export const {
handlers: { GET, POST },
signIn,
signOut,
unstable_update
} = nextAuth; EDIT: reason: deleted and re-installed
// need to do that coz of: https://github.com/nextauthjs/next-auth/issues/10568
export const auth: NextAuthResult["auth"] = nextAuth.auth;
export const signIn: NextAuthResult["signIn"] = nextAuth.signIn;
export const {
handlers: { GET, POST },
// signIn, // giving stupid error after just a simple re-install of node_modules
signOut,
unstable_update,
} = nextAuth; import type { Adapter } from "next-auth/adapters";
adapter: PrismaAdapter(db) as Adapter, |
I removed the extendes from my tsconifg.json > saved > restarted TS server > and added the extends back. After that it worked. 😂 |
Environment
System:
OS: macOS 14.4.1
CPU: (8) arm64 Apple M1
Memory: 63.70 MB / 16.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 21.7.1 - /opt/homebrew/bin/node
npm: 10.5.0 - /opt/homebrew/bin/npm
pnpm: 8.15.6 - /opt/homebrew/bin/pnpm
bun: 1.1.3 - ~/.bun/bin/bun
Watchman: 2024.03.25.00 - /opt/homebrew/bin/watchman
Browsers:
Brave Browser: 123.1.64.122
Chrome: 123.0.6312.123
Safari: 17.4.1
npmPackages:
next: 13.5.4 => 13.5.4
next-auth: ^5.0.0-beta.16 => 5.0.0-beta.16
react: ^18 => 18.2.0
Reproduction URL
https://github.com/SiebeBaree/declaration-ts-bug-next-auth-v5
Describe the issue
When turning on
declararation
anddeclarationMap
in the tsconfig.json NextAuth v5 beta 16 will give the following error:The code works perfectly fine in dev mode but will cause build errors during deployment.
The error happens in
src/auth.ts
in the reproduction repo linked aboveHow to reproduce
npx create-next-app@latest
(enable TypeScript)npm install next-auth@beta
auth.ts
file like the installation guide recommendsdeclaration
anddeclarationMap
to true in thecompilerOptions
of your tsconfig.jsonThis repository uses Bun but this error is the same on npm, pnpm with node.js runtime.
Expected behavior
That even with
declaration
anddeclarationMap
set to true NextAuth should give any issues when using the newauth()
function.The text was updated successfully, but these errors were encountered: