无法访问快速路线?

时间:2021-03-21 19:12:16

标签: javascript reactjs express

我正在做一个 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/,我会得到控制器的日志“初始化文件发布”?

2 个答案:

答案 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

提出请求