4

According to the docs https://next-auth.js.org/configuration/options#secret , adding a NEXTAUTH_SECRET as an environment variable, you don't have to define this option.

But in vercel production I still get,

2022-03-24T10:37:19.571Z    710a4b4b-24d3-4fb4-b991-9eb44179efc8    ERROR   [next-auth][error][NO_SECRET] 
https://next-auth.js.org/errors#no_secret Please define a `secret` in production. MissingSecret [MissingSecretError]: Please define a `secret` in production.
    at assertConfig (/var/task/node_modules/next-auth/core/lib/assert.js:24:14)
    at NextAuthHandler (/var/task/node_modules/next-auth/core/index.js:34:52)
    at NextAuthNextHandler (/var/task/node_modules/next-auth/next/index.js:16:51)
    at /var/task/node_modules/next-auth/next/index.js:52:38
    at Object.apiResolver (/var/task/node_modules/next/dist/server/api-utils/node.js:182:15)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async NextNodeServer.runApi (/var/task/node_modules/next/dist/server/next-server.js:386:9)
    at async Object.fn (/var/task/node_modules/next/dist/server/base-server.js:488:37)
    at async Router.execute (/var/task/node_modules/next/dist/server/router.js:228:32)
    at async NextNodeServer.run (/var/task/node_modules/next/dist/server/base-server.js:600:29) {
  code: 'NO_SECRET'
}

env is set as NEXTAUTH_SECRET=MYSECRETSNAPBOOK

Code:

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  pages: {
    signIn: '/auth/signin',
  },
  callbacks: {
    async session({ session, token, user }) {
      session.user.username = session.user.name
        .split(' ')
        .join('')
        .toLocaleLowerCase()

      session.user.uid = token.sub

      return session
    },
  },
})
Sai Krishnadas
  • 2,863
  • 9
  • 36
  • 69

1 Answers1

4

Here is the Fix,

  1. In .env file (or your vercel env) add NEXT_PUBLIC_SECRET=anything (Make sure you have NEXT_PUBLIC_SECRET name as it is)

  2. Add a secret option in [...nextauth].js

providers: [//Your providers],

secret: process.env.NEXT_PUBLIC_SECRET

  1. Make sure you don't use 7beta version. Up or Downgrade it to 4.1.2 (npm i next-auth@4.1.2)
Sai Krishnadas
  • 2,863
  • 9
  • 36
  • 69