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

Strapi用户图片上传关联字段触发TypeError报错求助

Strapi 4.6 上传用户头像关联字段时出现TypeError问题解决

运行环境

  • 服务器:Digital Ocean Ubuntu 20.04 + Nginx
  • Strapi版本:4.6
  • 数据库:默认SQL数据库
  • Node.js版本:18.13.0
  • NPM版本:8.19.3

问题现象

调用Strapi上传接口 strapiback.com/api/upload 上传用户头像,携带以下FormData参数:

formdata.append("ref", "user");
formdata.append("refId", userId);
formdata.append("field", "profpic");
formdata.append("source", "users-permissions");
  • 包含field字段时,上传直接失败,触发Cannot read properties of undefined (reading 'attributes')错误
  • 移除field字段后上传成功,但图片无法关联到用户的profpic字段

报错日志

error: Cannot read properties of undefined (reading 'attributes')
0|api      | TypeError: Cannot read properties of undefined (reading 'attributes')
0|api      |     at /root/strapi/node_modules/@strapi/database/lib/entity-manager/morph-relations.js:11:57
0|api      |     at Array.filter (<anonymous>)
0|api      |     at getMorphToManyRowsLinkedToMorphOne (/root/strapi/node_modules/@strapi/database/lib/entity-manager/morph-relations.js:7:8)
0|api      |     at deleteRelatedMorphOneRelationsAfterMorphToManyUpdate (/root/strapi/node_modules/@strapi/database/lib/entity-manager/morph-relations.js:28:24)
0|api      |     at Object.attachRelations (/root/strapi/node_modules/@strapi/database/lib/entity-manager/index.js:500:17)
0|api      |     at Object.create (/root/strapi/node_modules/@strapi/database/lib/entity-manager/index.js:230:20)
0|api      |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
0|api      |     at async Object.add (/root/strapi/node_modules/@strapi/plugin-upload/server/services/upload.js:363:17)
0|api      |     at async Promise.all (index 0)
0|api      |     at async Object.upload (/root/strapi/node_modules/@strapi/plugin-upload/server/services/upload.js:173:23)

问题原因

Strapi 4.6版本在处理users-permissions插件的用户模型关联字段时,存在形态关系(morph relations)处理的bug:当上传时指定field参数,系统无法正确识别用户模型的属性结构,导致读取attributes时触发未定义错误。

解决步骤

方法1:确认用户模型字段配置

  1. 找到项目中用户模型的配置文件,路径为./src/extensions/users-permissions/models/User.js
  2. 确保profpic字段已正确配置为媒体关联类型,示例配置如下:
module.exports = {
  attributes: {
    profpic: {
      type: 'media',
      allowedTypes: ['images'],
      multiple: false,
      required: false
    },
    // 保留原有其他属性配置
  }
};
  1. 保存文件后重启Strapi服务

方法2:分两步完成上传与关联

如果方法1无效,可拆分操作流程:

  1. 上传图片时移除field字段,成功后获取返回的文件ID
  2. 调用用户更新接口PUT /api/users/:userId,请求体携带关联数据:
{
  "data": {
    "profpic": [文件ID]
  }
}

方法3:升级Strapi版本

该bug在Strapi 4.7及以上版本已修复,直接升级到最新稳定版即可解决:

npm install strapi@latest

升级后执行构建并重启服务:

npm run build
npm run develop

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:05:38