首页 APP开发 正文内容

uni-app 开发 nvue 页面报错:ERROR: Selector ‘xxx’ is not supported. Weex only support classname selector

2023年08月17日 , , 554

nvue 页面开发会出现各种问题,样式报错就是一个经常遇到的,本文介绍如何解决。

问题描述

HbuilderX 中将常规的 Vue 页面改造成 nvue 页面,开发运行时控制台报下面错误

nvue 中不支持如下 CSS,如全局或公共样式受影响,建议将告警样式写在 ifndef APP-PLUS-NVUE 的条件编译中,详情如下:
ERROR: Selector 'body' is not supported. Weex only support classname selector at App.vue:365

问题分析

这是我刚开始用 nvue 的时候经常出现的问题,出现这个报错的原因,是因为使用 nvue 开发 APP 时,运行到手机时是原生渲染, nvue 只支持部分 CSS 写法,报错上说的是在 CSS 中,不支持 ‘body’ 这一类在网页开发中使用的选择器,只支持 class 选择器。需要注意的是,因为运行时是编译后的结果,报错时提示的报错位置代码行可能是不对的,这时候就需要自己去检查 CSS。

解决办法

根据报错提示找到报错的文件 App.vue,检查这个文件的 CSS 以及引用的所有外部 CSS 文件,把所有 H5 网页中写的非 class 选择器,全都改写成 class 选择器。如果元素没有写 class="xxxx",为了样式生效,都得添加 class,添加后在 CSS 中复制原来的样式,问题就解决了。

一定要把所有的选择器都改成 class,否则报错依旧会有。