uni-app schema2code生成的admin端CRUD中图片组件报错

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app schema2code生成的admin端CRUD中图片组件报错

开发环境 版本号 项目创建方式
Mac 12.4 HBuilderX
Android Android 12
HBuilderX 3.4.12

产品分类:uniapp/App

页面类型:vue

vue版本:vue2

打包方式:云端

// schema 如下:
"name": {
"bsonType": "string",
"title": "名称",
"description": "品牌商名称"
},
"logo": {
"bsonType": "file",
"fileMediaType": "image",
"fileExtName": "jpg,png,jpeg,webp",
"title": "图标",
"description": "品牌商的品牌图标"
}

添加时如果不上传图片,会将file类型的字段存为 logo: null  
然后通过修改时就会报错  
如果手动将数据库中logo字段改成 logo: {}后,就可以修改上传图片了。但如果吧schemafile类型的默认值改成 {} ,会报错不允许为 {}  

修改保存时会报错:
errCode: InternalServerError | errMsg: Cannot create field 'extname' in element {logo: ""} 

bug描述:
生成的代码,无法修改保存图片类型。

2 回复

参考下面的临时方案
add.vue 页面
/**

  • 验证表单并提交
    */
    submit() {
    uni.showLoading({
    mask: true
    })
    this.$refs.form.validate().then((res) => {
    this.removeNullField(res)
    return this.submitForm(res)
    }).catch(() => {
    }).finally(() => {
    uni.hideLoading()
    })
    },

// 临时方案,解决图片首次没有上传,修改时无法提交的问题
removeNullField(res) {
for (let key in res) {
if (res[key] === null) {
delete res[key]
}
}
}


在使用 uni-appschema2code 生成 Admin 端 CRUD 页面时,如果遇到图片组件报错,可能是由于以下几个原因导致的。以下是一些常见的排查和解决方法:

1. 图片路径问题

  • 问题描述: 生成的代码中,图片路径可能不正确,导致图片无法加载。
  • 解决方法: 检查生成的代码中图片路径是否正确,确保路径是相对路径或绝对路径,并且图片文件确实存在于指定路径下。
// 示例代码
<image src="/static/logo.png"></image>

确保 logo.png 文件存在于 static 目录下。

2. 图片组件属性问题

  • 问题描述: 图片组件的某些属性可能未正确设置,导致报错。
  • 解决方法: 检查图片组件的属性,如 srcmode 等,确保它们被正确设置。
// 示例代码
<image src="/static/logo.png" mode="aspectFit"></image>

确保 mode 属性值正确,如 aspectFitaspectFillwidthFix 等。

3. 图片组件未正确引入

  • 问题描述: 如果图片组件未正确引入或未在页面中注册,可能会导致报错。
  • 解决方法: 确保图片组件在页面中正确引入和注册。
// 示例代码
<template>
  <view>
    <image src="/static/logo.png"></image>
  </view>
</template>

4. 图片组件样式问题

  • 问题描述: 图片组件的样式可能未正确设置,导致图片显示异常或报错。
  • 解决方法: 检查图片组件的样式,确保宽度、高度等样式属性正确设置。
// 示例代码
<image src="/static/logo.png" style="width: 100px; height: 100px;"></image>

5. 图片组件事件问题

  • 问题描述: 如果图片组件绑定了事件,但事件处理函数未正确定义,可能会导致报错。
  • 解决方法: 检查图片组件的事件绑定,确保事件处理函数已正确定义。
// 示例代码
<image src="/static/logo.png" [@click](/user/click)="handleImageClick"></image>

<script>
export default {
  methods: {
    handleImageClick() {
      console.log('Image clicked');
    }
  }
}
</script>

6. 图片组件兼容性问题

  • 问题描述: 在某些平台或环境下,图片组件可能存在兼容性问题。
  • 解决方法: 检查 uni-app 的文档,确保图片组件的使用符合平台要求,或者尝试使用其他图片组件。

7. 图片组件缓存问题

  • 问题描述: 图片可能被缓存,导致更新后的图片无法显示。
  • 解决方法: 尝试清除缓存,或者在图片路径中添加时间戳参数。
// 示例代码
<image :src="'/static/logo.png?' + Date.now()"></image>

8. 图片组件网络问题

  • 问题描述: 如果图片是通过网络加载的,可能存在网络问题导致图片无法加载。
  • 解决方法: 检查网络连接,确保图片 URL 可访问。
// 示例代码
<image src="https://example.com/logo.png"></image>

9. 图片组件权限问题

  • 问题描述: 在某些情况下,图片加载可能需要特定的权限。
  • 解决方法: 检查是否有权限问题,确保应用有权限访问图片资源。

10. 图片组件大小问题

  • 问题描述: 图片文件过大可能导致加载缓慢或报错。
  • 解决方法: 优化图片大小,确保图片文件大小适中。

11. 图片组件格式问题

  • 问题描述: 图片格式可能不被支持,导致报错。
  • 解决方法: 确保图片格式被支持,如 pngjpgjpeg 等。

12. 图片组件跨域问题

  • 问题描述: 如果图片是通过跨域加载的,可能存在跨域问题。
  • 解决方法: 确保服务器配置了正确的跨域策略,或者使用代理服务器。

13. 图片组件加载失败处理

  • 问题描述: 图片加载失败时,未正确处理可能导致报错。
  • 解决方法: 使用 [@error](/user/error) 事件处理图片加载失败的情况。
// 示例代码
<image src="/static/logo.png" [@error](/user/error)="handleImageError"></image>

<script>
export default {
  methods: {
    handleImageError() {
      console.log('Image load failed');
    }
  }
}
</script>

14. 图片组件动态绑定问题

  • 问题描述: 如果图片路径是动态绑定的,可能由于数据未及时更新导致报错。
  • 解决方法: 确保动态绑定的数据及时更新,或者使用 v-if 控制图片组件的显示。
// 示例代码
<image :src="imageUrl" v-if="imageUrl"></image>

<script>
export default {
  data() {
    return {
      imageUrl: ''
    };
  },
  mounted() {
    this.imageUrl = '/static/logo.png';
  }
}
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!