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

Cloudinary上传报Cannot read properties of undefined (reading 'image')错误求助

问题修复方案

核心错误原因

你当前的报错是控制器模块导出逻辑错误导致的路由绑定异常:
你在控制器文件末尾连续两次赋值module.exports,后面的uploadImage会直接覆盖前面的createPost,导致/create-post路由绑定的createPost实际指向的是uploadImage函数。
你发布帖子调用/create-post接口时,没有上传图片文件,req.files为undefined,uploadImage函数尝试读取req.files.image.path就会抛出你遇到的TypeError: Cannot read properties of undefined (reading 'image')错误。

分步修复操作

1. 修复控制器导出逻辑

把控制器文件末尾的导出代码替换为以下内容,同时导出两个控制器方法:

// 替换原来的两行module.exports赋值
module.exports = { createPost, uploadImage };

同时修改路由文件中引入控制器的代码,改为解构引入:

// 路径对应你实际的文件位置即可
const { createPost, uploadImage } = require('../controler/post/post');

2. 修复发布帖子的提交逻辑

你在handleFile上传完图片后已经把图片地址存在了image状态中,但提交create-post接口时没有把图片数据传给后端,需要修改submit函数的请求参数:

const { data } = await axios.post(
    "http://localhost:8000/api/create-post",
    {
        content,
        // 新增:把上传完成的图片数据传给后端
        image: image
    },
    {
        headers: {
            Authorization: `Bearer ${token.token}`,
        },
    }
);

3. 可选优化(非必改)

如果你后续需要支持在发布帖子时同时上传图片和内容,可以给/create-post路由也加上formidable中间件:

router.post("/create-post", requireSignIn, formidable({ maxFileSize: 5 * 1024 * 1024 }), createPost);

验证操作

修改完成后重启后端服务,先上传图片拿到返回的地址,再输入内容点击发布,即可正常创建带图片的帖子。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:02