You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js项目导入User模型触发MODULE_NOT_FOUND错误求助

Next.js 应用导入User模型后触发模块找不到错误

开发Next.js应用时,在AuthOptions.js第3行导入User模型后,出现大量错误,包括code: 'MODULE_NOT_FOUND'、page: '/api/auth/_log'以及Error: Cannot find module 'styled-jsx/package.json'。

已尝试的解决方法

  • 移除导入语句可消除错误,但该文件必须使用User模型
  • 执行npm install styled-jsx
  • 删除package.json和锁文件后重新执行npm install
  • 搜索错误信息并通过ChatGPT寻求解答
  • 回退Git变更定位到引发问题的具体代码行

相关代码

AuthOptions.js

import GoogleProvider from 'next-auth/providers/google'
import connectDB from '@/config/database'
import User from '@/models/User'; // <--- 引发问题的行

export const authOptions = {
    providers: [
        GoogleProvider({
            clientId: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
            authorization: {
                params: {
                  prompt: "consent",
                  access_type: "offline",
                  response_type: "code"
                }
            }            
        })
    ],
    callbacks: {
        // 登录成功时调用
        async signIn({profile}) {
        // 1. 连接数据库
        await connectDB()
        // 2. 检查用户是否存在
        const userExists = await User.findOne({ email: profile.email})
        // 3. 如果不存在,添加用户到数据库
        if (!userExists) {
        // 截断过长的用户名
            const username = profile.name.slice(0,20)

            await User.create({
                email: profile.email,
                username,
                image: profile.picture,
            })
        }
        // 4. 返回true允许登录
        return true

        }, // 修改session对象
        async session({session}) {
            // 1. 从数据库获取用户
            const user = await User.findOne({ email: session.user.email})
            // 2. 将用户ID赋值给session
            session.user.id = user._id.toString()
            // 3. 返回session
            return session
        }
    }
}

User模型代码

import { Schema, model, models } from 'mongoose'
import { unique} from 'next/dist/build/utils'

const UserSchema = new Schema({
    email: {
        type: String,
        unique: [true, '邮箱已存在'],
        required: [true, '邮箱为必填项']
    },
    username: {
        type: String,
        required: [true, '用户名为必填项']
    },
    image: {
        type: String
    },
    bookmarks: [
        {
            type: Schema.Types.ObjectId,
            ref: 'Campaign'
        }
    ]
}, {
    timestamps: true
})

const User = models.User || model('User', UserSchema)

export default User

connectDB函数代码

import mongoose from 'mongoose'

let connected = false

const connectDB = async () => {
mongoose.set('strictQuery', true)

// 如果数据库已连接,不再重复连接
    if (connected) {
        console.log('MongoDB已连接...')
        return
    }

    // 连接MongoDB
    try{
        await mongoose.connect(process.env.MONGODB_URI)
        connected = true
        console.log('MongoDB连接成功...')
    } catch (error) {
        console.log(error)
    }

}

export default connectDB

文件结构

项目根目录
├── config/
│   └── database.js
├── models/
│   └── User.js
├── pages/
│   └── api/
│       └── auth/
│           └── [...nextauth].js
└── AuthOptions.js

控制台错误信息

  • code: 'MODULE_NOT_FOUND'
  • page: '/api/auth/_log'
  • Error: Cannot find module 'styled-jsx/package.json'
  • 伴随大量模块导入相关的连锁报错

内容的提问来源于stack exchange,提问作者Boingoloid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:35:55