javascript 尝试将mongoose连接到我的mongodb并获得浏览器内错误

h43kikqp  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(106)

代码在我的编辑器中编译得很好,但只显示在我的浏览器应用程序中:

import React, { useState } from 'react';
import mongoose from 'mongoose';

mongoose.connect(process.env.DATABASE_URL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
  console.log('Connected to the database');
});

const Index = () => {
    const [postText, setPostText] = useState('');

    const handleSubmit = (e) => {
        e.preventDefault();
        // add code here to handle form submission and create a post
        setPostText('');
    }

    return (
        <div>
            <h1>Welcome to My Social Media App</h1>
            <form onSubmit={handleSubmit}>
                <textarea value={postText} onChange={(e) => setPostText(e.target.value)} placeholder="What's on your mind?"/>
                <button type="submit">Post</button>
            </form>
        </div>
    )
}

export default Index;

未处理的运行时错误TypeError:mongoose__WEBPACK_IMPORTED_MODULE_2___default(...).连接不是函数
我只是想让它连接到我的mongodb,老实说,我尝试了chatgpt建议我做的一些事情,因为我正在学习使用它编码,所以我只是要求它修复它,但它不能。我不知道我还应该说什么。
一开始我得到了这个错误:
类型错误:mongoose. connect不是函数
所以我试着
这个错误通常是由于你忘记导入文件中的mongoose模块而引起的。请确保你的文件顶部有下面一行:
javascript复制代码

const mongoose = require("mongoose");

另外,通过运行npm install mongoose,确保已经在项目中安装了mongoose包。
还有这个
发生错误的原因是您试图调用mongoose模块上的connect函数,但mongoose尚未正确导入。
尝试更改此行:
javascript复制代码

const mongoose = require('mongoose');

改为:
python复制代码

import mongoose from 'mongoose';

这应该可以解决错误,并允许您使用Mongoose连接到MongoDB数据库。
然后这个
问题是mongoose模块是使用require语句导入的,这是CommonJS模块常用的语句,但是,因为您使用的是使用ES6模块构建的Next.js应用程序,所以您需要使用import语句:
javascript复制代码

import mongoose from 'mongoose';

mongoose.connect(process.env.DATABASE_URL, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', () => {
  console.log('Connected to the database');
});
x3naxklr

x3naxklr1#

所以,在Matt的评论之后,我把他的回复反馈给chatGPT,这是它吐出的代码,它修复了这个问题:
下面介绍如何使用getServerSideProps修复代码中的错误:
javascript复制代码

import React, { useState } from 'react';
import mongoose from 'mongoose';

const Index = () => {
    const [postText, setPostText] = useState('');

    const handleSubmit = (e) => {
        e.preventDefault();
        // add code here to handle form submission and create a post
        setPostText('');
    }

    return (
        <div>
            <h1>Welcome to My Social Media App</h1>
            <form onSubmit={handleSubmit}>
                <textarea value={postText} onChange={(e) => setPostText(e.target.value)} placeholder="What's on your mind?"/>
                <button type="submit">Post</button>
            </form>
        </div>
    )
}

export async function getServerSideProps(context) {
    await mongoose.connect(process.env.DATABASE_URL, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });

    const db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', () => {
        console.log('Connected to the database');
    });

    return {
        props: {},
    };
}

export default Index;

这样,mongoose代码将只在服务器端运行,而不会干扰客户端呈现。

相关问题