首页 > 解决方案 > 接收消息:使用 NodeJS 和 React 时无法获取 / 错误

问题描述

我知道这些年来类似的问题已经得到了多次回答,我几乎浏览了所有这些问题,似乎无法弄清楚我的问题是什么。

在浏览器中打开 localhost:5000 时,我收到了 NodeJS 无法获取 / 错误。检查时我可以看到它说“加载资源失败:服务器响应状态为 404(未找到)”,我认为这可能与我的控制器文件有关。

注意:我正在尝试根据本教程编写代码:https ://www.youtube.com/watch?v=ngc9gnGgUdA

之前为我显示了“This works”消息,并且数组符号仍然显示。这是我第一次遇到这个问题的 JSX 结构部分(从 28:50 开始)。我觉得我完全按照教程的说明做了,但也许我需要一个比我更好的人来看看它。

服务器/Index.js

import express from 'express';
// import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';

import postRoutes from './routes/posts.js';

const app = express();

app.use('/posts', postRoutes);

app.use(express.json({ limit: "30mb", extended: true }));
app.use(express.urlencoded({ limit: "30mb", extended: true }));
app.use(cors());

const CONNECTION_URL = 'mongodb+srv://*****:******@cluster0.kwo9h.mongodb.net/myFirstDatabase?retryWrites=true&w=majority'

const PORT = process.env.PORT || 5000;

mongoose.connect(CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => app.listen(PORT, () => console.log(`Server running on port: ${PORT}`)))
    .catch((error) => console.log(error.message));

    mongoose.set('useFindAndModify', false);

控制器/职位

import PostMessage from '../models/postMessage.js';
// import router from '../routes/posts.js';


export const getPosts = async (req, res) => {
    try {
        const postMessages = await PostMessage.find();

        // console.log(postMessages);

        res.status(200).json(postMessages);
    } catch (error) {
        res.status(404).json({ message: error.message });
    }
}

export const createPost = async (req, res) => {
    const 

post = req.body;

const newPost = new PostMessage(post);

try {
    await newPost.save();

    res.status(201).json(newPost);
} catch (error) {
    res.status(409).json({ message: error.message });
}

}

路线/帖子

import express from 'express';

import { getPosts, createPost } from '../controllers/posts.js'

const router = express.Router();

// localhost:5000/posts

router.get('/', getPosts);
router.post('/', createPost);

export default router;

任何帮助肯定会让我开心。谢谢!

标签: node.jsreactjsexpress

解决方案


不能直接使用路由器。首先声明 express 应用程序并将路由器附加到它。

const app = express();
const router = express.Router();

router.get('/', getPosts);
router.post('/', createPost);

app.use('/', router)
export default router;

推荐阅读