chenstarx
chenstarx
  • 发布:2022-01-24 19:24
  • 更新:2022-01-24 20:54
  • 阅读:455

【报Bug】小程序使用 script setup 编译后组件未注册

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.3.9

第三方开发者工具版本号: 最新

基础库版本号: 最新

项目创建方式: HBuilderX

操作步骤:

见描述

预期结果:

见描述

实际结果:

见描述

bug描述:

试了一下 script setup 编译成小程序后能运行,但是引入的组件没有被正常编译注册

比如 vue3 官方的一个示例:

<script setup>  
import MyComponent from './MyComponent.vue'  
</script>  

<template>  
  <MyComponent />  
</template>

如果编译成 H5,MyComponent 是被正常注册的,但是编译成小程序后这个组件未被注册

大概排查了一下,发现原因是编译后组件没有被注册到该页面对应的 JSON 中

/* 目前编译后的内容 */  
"usingComponents": {}  

/* 期望的编译内容 */  
"usingComponents": {  
  "my-component": "../../components/MyComponent"  
}

这个编译问题解决后小程序下就能正常使用 script setup 了

附:我目前的兼容方案是手动再加一个 script 模块,然后在 components 里注册组件

<script>  
import MyComponent from '@/components/MyComponent';  

export default {  
  components: {  
    MyComponent  
  }  
};  
</script>
2022-01-24 19:24 负责人:无 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

未复现此问题。可以提供简单可复现的完整示例(上传附件)吗?方便我们快速排查问题哦。

  • chenstarx (作者)

    你再检查一下,用 script setup 引入的组件并没有出现在小程序页面 json 的 usingComponents 中,导致组件实际上并没被注册

    2022-01-26 11:08

  • DCloud_UNI_Anne

    回复 chenstarx: 查看正常,请升级至HBuilderX3.3.10试下

    2022-01-26 14:26

  • chenstarx (作者)

    回复 DCloud_UNI_Anne: 还是不行,HbuilderX和cli都试过了,这个问题是父组件用script setup去import子组件,导致子组件未渲染。刚试了下如果之前项目运行过的话,这个bug不会复现,得在全新项目中运行才能复现。

    2022-02-21 14:07

  • DCloud_UNI_Anne

    回复 chenstarx: 请提供简单可复现的完整示例(上传附件),方便我们快速排查问题哦。

    2022-02-22 17:31

该问题目前已经被锁定, 无法添加新回复