node.js - 接收消息:使用 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;
任何帮助肯定会让我开心。谢谢!
解决方案
不能直接使用路由器。首先声明 express 应用程序并将路由器附加到它。
const app = express();
const router = express.Router();
router.get('/', getPosts);
router.post('/', createPost);
app.use('/', router)
export default router;
推荐阅读
- computer-vision - 如何在给定两个图像和相机位置/方向的情况下找到对象的 3D 坐标(三角测量)
- csv - 如何在Dialogflow的知识功能中加载数千行的CSV文件?
- design-patterns - 如何设计聚合的领域驱动设计应用服务?
- reactjs - 如何在 React 中处理浏览器选项卡关闭事件?只关闭不刷新
- android-layout - 带有垂直颜色边框的Android列表视图
- python - 如何使用给定模板生成 PDF,将 Python 或 NodeJS 中的动态数据部署在 AWS 上
- flutter - 如何将数据添加到颤振流?
- postgresql - 用户在 postgres 中实现了节流
- java - 从json字符串反序列化字节数组
- javascript - 在 Google Sheets 脚本编辑器上创建嵌套 For-Loop 以将数据自动提取为所需格式