nuxt-mongoose 模块:无法解析导入“#nuxt/mongoose”

问题描述 投票:0回答:1

我正在尝试将我的 Nuxt 项目与 nuxt-mongoose 模块集成。 (https://nuxt-mongoose.nuxt.space/getting-started/setup

但是即使我已按照所有步骤操作,我还是遇到了问题。

首先我安装了软件包

npm install nuxt-mongoose -D

然后我设置了 .env 和 nuxt.config.ts

// nuxt.config.ts

export default defineNuxtConfig({
  devtools: { enabled: true },

  css: [
    'vuetify/styles/main.sass'
  ],

  build: {
    transpile: ['vuetify']
  },

  modules: [
    'nuxt-mongoose',
  ],

  nitro: {
  },

  mongoose: {
    uri: process.env.MONGODB_URI,
    options: {},
    modelsDir: 'models'
  }
})

所以我按照 wiki 的模式创建了一个架构

// server/models/user.schema.js

import {defineMongooseModel} from "#nuxt/mongoose"; //Here is where I'm getting the error

export const UserSchema = defineMongooseModel({
    name: 'UserSchema',

    schema: {
        name: {
            type: 'string',
            required: true,
        },

        email: {
            type: 'string',
            required: true,
            unique: true
        },

        password: {
            type: 'string',
            required: true
        }
    }
});

即使我按照 wiki 中的内容操作,运行

npm run dev
时,我也会收到此错误:

ERROR  Failed to resolve 
import "#nuxt/mongoose" from "server\models\user.schema.js". 
Does the file exist?

我已经检查过,实际上模块导出存在,所以使用的方法,所以我不知道为什么它不起作用。

我尝试删除其他互联网页面中看到的

import {defineMongooseModel} from "#nuxt/mongoose"
,但随后错误表明它找不到该方法。

我多次尝试删除并安装该软件包

nuxt-mongoose
,但没有成功。

javascript vue.js mongoose nuxt.js nuxtjs3
1个回答
0
投票

检查您发送的链接后,您的架构配置正常。问题是,

~/pages/index.vue
里面的代码。如果我没记错的话,服务器中的文件只能在服务器文件夹内访问,API 路由除外。

页面

index.vue
里面的代码,替换成这个。

<template>
  <div>
    <v-btn @click="saveTestUser()">Prova prova</v-btn>
  </div>
</template>

<script setup lang="ts">

async function saveTestUser() {
  console.log('clicked')
  $fetch('/api/users/create', {
    method: 'POST',
    body: {
      name: 'Giggio',
      email: '[email protected]',
      password: 'snmpassword'
    }
  }).then(() => {
    console.log('Success')
  }).catch((err) => {
    console.log(err)
  })
}
</script>

~/server/api/create.post.js

export default defineEventHandler( async ( event ) => {
    try {
        const body = await readBody( event )
        await UserSchema.create( body )
        return 200

    } catch ( error ) {
        console.log( error )
        return createError( { statusCode: 500, statusMessage: 'Something went wrong.' } )
    }
} )

已测试,有效!

© www.soinside.com 2019 - 2024. All rights reserved.