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

Node Express报错Cannot POST /blogs/newBlog:MEAN全栈博客请求问题

Hey there! Let's dig into that Cannot POST /blogs/newBlog error you're hitting with your MEAN stack app. Since your auth flows were working fine before, let's break down the most likely culprits step by step:

1. Double-check your backend route setup

First, confirm your blog route file correctly defines the POST endpoint and is mounted to the /blogs prefix properly:

// Example in routes/blogs.js
const express = require('express');
const router = express.Router();
const Blog = require('../models/Blog');

// Make sure this POST route is defined correctly
router.post('/newBlog', async (req, res) => {
  try {
    const newBlog = new Blog(req.body);
    await newBlog.save();
    res.status(201).json(newBlog);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

module.exports = router;

Then in your root index.js, ensure you're mounting the blog routes after any necessary middleware (like express.json()):

const blogRoutes = require('./routes/blogs');

// This line must come BEFORE mounting routes
app.use(express.json());

// Mount the blog routes to the /blogs prefix
app.use('/blogs', blogRoutes);

Don't overlook typos—make sure newBlog is cased consistently between your route definition and frontend request.

2. Verify critical middleware is in place

  • If you're sending JSON data from the frontend, express.json() is non-negotiable for parsing the request body. It has to be applied before your route mounts, otherwise the backend won't understand the incoming data.
  • If your blog endpoint requires authentication (e.g., only logged-in users can create posts), ensure your auth middleware (like JWT verification) is correctly applied to the /newBlog route. A misconfigured middleware could block the request or alter the route path unexpectedly.

3. Audit your frontend request details

  • Confirm your frontend is sending the POST request to the full path /blogs/newBlog, not just /newBlog. For example, with axios:
    // Correct request
    axios.post('/blogs/newBlog', yourBlogData)
      .then(response => console.log(response))
      .catch(error => console.error(error));
    
  • Check that your request headers include Content-Type: application/json (if sending JSON). Missing this can cause the backend to reject the request entirely.

4. Ensure your Blog model is properly exported/imported

Even though you're using the tutorial's Schema, double-check your model file exports a Mongoose model (not just the Schema):

// models/Blog.js
const mongoose = require('mongoose');

const blogSchema = new mongoose.Schema({
  // Tutorial-provided fields (title, content, author, etc.)
});

// Export the model, not just the schema
module.exports = mongoose.model('Blog', blogSchema);

Importing the Schema instead of the model would break your blog creation logic, which could indirectly cause route errors.

5. Test the route directly with Postman/curl

Bypass the frontend entirely and send a POST request to http://localhost:YOUR_PORT/blogs/newBlog using a tool like Postman. Include any required auth headers (e.g., a JWT token) and a sample request body.

  • If this test fails, the issue is definitely in your backend route or configuration.
  • If it succeeds, the problem lies in your frontend request setup (wrong URL, missing headers, etc.).

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:36