我正在做一个 mern 项目,我有这么小的?错误: 当我尝试在特定路线上发帖时,express 返回 404 并且找不到我想要的路线。 当我尝试发布到索引路由 '/' 时,一切正常。这是一个片段:
在 /controllers/imageController
图像控制器
exports.image_upload_post = (req,res) => {
console.log('init file posting')
}
在 /controllers/accidentController
事故控制器(工作正常)
exports.accident_detail_post = (req,res) => {
console.log('init form data posting')
}
路线如下:
路线/图片上传路线:
const express = require('express')
const router = express.Router()
const image_upload_controller = require('../controllers/ImageUploadController')
router.post('/upload', image_upload_controller.image_upload_post)
module.exports = router
/routes/index 路线:(工作路线)
const express = require('express')
const router = express.Router()
const accident_detail_controller = require('../controllers/AccidentController')
router.post('/', accident_detail_controller.accident_detail_post)
module.exports = router
最后,server.js:
const express = require('express')
const cors = require('cors')
const mongoose = require('mongoose')
const app = express()
const indexRouter = require('./routes/index')
const imageUploadRouter = require('./routes/imageUpload')
app.use(cors())
app.use(express.json())
app.use('/', indexRouter)
app.use('/upload', imageUploadRouter)
我的问题是,为什么当我尝试做这样的事情时:
const submitData = async (e) => {
e.preventDefault()
await axios.post('http://localhost:3001/upload', 'test')
}
在客户端 React 应用程序中,它返回 404 错误?如果我尝试发布到 http://localhost:3001/,我会得到控制器的日志“初始化文件发布”?
答案 0 :(得分:1)
你有
app.use('/upload', imageUploadRouter)
在 imageUploadRouter 文件中,你有
router.post('/upload', image_upload_controller.image_upload_post)
这意味着您的完整路径将是
/upload/upload
和 URL 将是
http://localhost:3001/upload/upload
<块引用>
解决方案:将 imageUploadRouter 中的 /upload 替换为 /
router.post('/', image_upload_controller.image_upload_post)
在这种情况下,URL 将是
http://localhost:3001/upload
答案 1 :(得分:0)
问题在于本质上您的路线不是http://localhost:3001/upload
,而是http://localhost:3001/upload/upload
。您将在“routes/imageUpload rout”中定义一次,然后在“index.js”中再次定义它。一个简单的解决方法是在索引文件中写入 app.use('/api', imageUploadRouter)
。然后您可以向http://localhost:3001/api/upload