Next.js本地运行报错:TypeError: Cannot convert undefined or null to object
Next.js项目运行时出现「TypeError: Cannot convert undefined or null to object」错误排查求助
本地运行Next.js项目时触发「TypeError: Cannot convert undefined or null to object」错误(错误截图如下)。已尝试以下操作但均未解决问题:
- 更新package.json中所有依赖包
- 删除node_modules和package-lock.json后重新执行
npm install - 注释大量项目代码
推测问题可能与next-auth或.env.local文件相关,但无法定位具体原因。
.env.local 配置
GOOGLE_CLIENT_ID=******** GOOGLE_CLIENT_SECRET=******** GITHUB_CLIENT_ID=******** GITHUB_CLIENT_SECRET=******** EMAIL_SERVER_HOST=******** EMAIL_SERVER_PORT=******** EMAIL_SERVER_USER=******** EMAIL_SERVER_PASSWORD=******** EMAIL_FROM=******** NEXTAUTH_URL=******** SECRET=********
[...nextauth].js 代码
import NextAuth from "next-auth"; import GoogleProvider from "next-auth/providers/google"; import GitHubProvider from "next-auth/providers/github"; import EmailProvider from "next-auth/providers/email"; import { FirebaseAdapter } from "@next-auth/firebase-adapter"; import { initializeApp, getApp, getApps } from "firebase/app"; import { getFirestore, collection, query, getDocs, where, limit, doc, getDoc, addDoc, updateDoc, deleteDoc, runTransaction, } from "firebase/firestore"; const firebaseConfig = { apiKey: ********, authDomain: ********, projectId: ********, storageBucket: ********, messagingSenderId: ********, appId: ********, }; const app = !getApps().length ? initializeApp(firebaseConfig) : getApp(); const db = getFirestore(); export default NextAuth({ // Configure one or more authentication providers adapter: FirebaseAdapter({ db, collection, query, getDocs, where, limit, doc, getDoc, addDoc, updateDoc, deleteDoc, runTransaction, }), providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, }), GitHubProvider({ clientId: process.env.GITHUB_CLIENT_ID, clientSecret: process.env.GITHUB_CLIENT_SECRET, }), EmailProvider({ server: { host: process.env.EMAIL_SERVER_HOST, port: process.env.EMAIL_SERVER_PORT, auth: { user: process.env.EMAIL_SERVER_USER, pass: process.env.EMAIL_SERVER_PASSWORD, }, }, from: process.env.EMAIL_FROM, }), // ...add more providers here ], // pages: { // signIn: "/auth/signin", // }, callbacks: { async session({ session, token, user }) { if (session.user.name) { user.username = session.user.name .split(" ") .join("") .toLocaleLowerCase(); } else { user.username = session.user.email.split("@")[0]; } session.user.image ? (user.image = session.user.image) : (user.image = "https://villagesonmacarthur.com/wp-content/uploads/2020/12/Blank-Avatar.png"); return { user, }; }, // async user({ session, token, user }) { // user.userId = user.id; // return { // id: user.userId, // }; // }, }, secret: process.env.SECRET, });
package.json 配置
{ "name": "instagram-clone", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@headlessui/react": "^1.7.3", "@heroicons/react": "^2.0.12", "@next-auth/firebase-adapter": "^1.0.2", "firebase": "^9.12.1", "moment": "^2.29.4", "next": "latest", "next-auth": "4.14.0", "nodemailer": "^6.8.0", "react": "18.2.0", "react-dom": "18.2.0", "react-moment": "^1.1.2", "react-router-dom": "^6.4.2", "recoil": "^0.7.6", "tailwind-scrollbar-hide": "^1.1.7" }, "devDependencies": { "@faker-js/faker": "^7.6.0", "@tailwindcss/forms": "^0.5.3", "autoprefixer": "^10.4.12", "eslint": "8.25.0", "eslint-config-next": "12.3.1", "postcss": "^8.4.18", "tailwind-scrollbar": "^2.0.1", "tailwindcss": "^3.1.8" } }
错误截图

内容的提问来源于stack exchange,提问作者Kirsty Richmond
相关产品推荐
相关产品推荐

