HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

Module Error 模块错误

view
<template>  

        <view>1</view>  
        <view>2</view>  

</template>  

<script>  
</script>  

<style>  
</style>

该文档编译后出现Module Error 模块错误提示

11:14:32.435 正在编译中...  
11:14:33.114  INFO  Starting development server...  
11:14:37.884 Module Error (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js):  
11:14:37.884 (Emitted value instead of an instance of Error)   
11:14:37.888   Errors compiling template:  
11:14:37.888   Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.  
11:14:37.893   1  |    
11:14:37.893   2  |    
11:14:37.900   3  |  <view>1</view>  
11:14:37.900      |                   
11:14:37.903   4  |  <view>2</view>  
11:14:37.907      |  ^^^^^^^^^^^^^^  
11:14:37.911   5  |    
11:14:37.913      |    

需要在1和2两个模块外再套一层view

<template>  
        <view>  
        <view>1</view>  
        <view>2</view>  
        </view>  
</template>  

<script>  
</script>  

<style>  
</style>

也就是说在template之间只能有一个主view,
不能有两个同时出现并列的view,
如果有就只能作为子view嵌套进主view中去。

继续阅读 »
<template>  

        <view>1</view>  
        <view>2</view>  

</template>  

<script>  
</script>  

<style>  
</style>

该文档编译后出现Module Error 模块错误提示

11:14:32.435 正在编译中...  
11:14:33.114  INFO  Starting development server...  
11:14:37.884 Module Error (from ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js):  
11:14:37.884 (Emitted value instead of an instance of Error)   
11:14:37.888   Errors compiling template:  
11:14:37.888   Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.  
11:14:37.893   1  |    
11:14:37.893   2  |    
11:14:37.900   3  |  <view>1</view>  
11:14:37.900      |                   
11:14:37.903   4  |  <view>2</view>  
11:14:37.907      |  ^^^^^^^^^^^^^^  
11:14:37.911   5  |    
11:14:37.913      |    

需要在1和2两个模块外再套一层view

<template>  
        <view>  
        <view>1</view>  
        <view>2</view>  
        </view>  
</template>  

<script>  
</script>  

<style>  
</style>

也就是说在template之间只能有一个主view,
不能有两个同时出现并列的view,
如果有就只能作为子view嵌套进主view中去。

收起阅读 »

使用动态路由时,必须要注意的

路由

写在router文件下的index.js 下:

// 避免路由重复报错 NavigationDuplicated: Avoided redundant navigation to current location: "//".
const originalPush = Router.prototype.push;
const originalReplace = Router.prototype.replace;
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}
Router.prototype.replace = function replace(location) {
return originalReplace.call(this, location).catch(err => err);
};

继续阅读 »

写在router文件下的index.js 下:

// 避免路由重复报错 NavigationDuplicated: Avoided redundant navigation to current location: "//".
const originalPush = Router.prototype.push;
const originalReplace = Router.prototype.replace;
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}
Router.prototype.replace = function replace(location) {
return originalReplace.call(this, location).catch(err => err);
};

收起阅读 »

SyntaxError:Unknown word

编译后出现以下报错信息:

01:19:52.191 请注意运行模式下,因日志输出、sourcemap以及未压缩源码等原因,性能和包体积,均不及发行模式。  
01:19:52.191 正在编译中...  
01:19:52.544  INFO  Starting development server...  
01:19:57.294 Module build failed (from ./node_modules/postcss-loader/src/index.js):  
01:19:57.295 SyntaxError  
01:19:57.295 (15:32) Unknown word  
01:19:57.295   13 |   
01:19:57.295   14 | .search-view image{width: 35upx; height: 35upx;}  
01:19:57.295 > 15 | .search-view{font-size: 30upx; flex; font-weight: bold; }  
01:19:57.295      |                                ^  
01:19:57.295   16 | .search-text{padding: 0 10upx;}  
01:19:57.311   17 | 

根据错误提示中的箭头指示位置flex,
网上查明说是要flex的分号前面加冒号即可flex: ;
即使属性是空也有冒号分隔和分号结束保证格式完整性。

继续阅读 »

编译后出现以下报错信息:

01:19:52.191 请注意运行模式下,因日志输出、sourcemap以及未压缩源码等原因,性能和包体积,均不及发行模式。  
01:19:52.191 正在编译中...  
01:19:52.544  INFO  Starting development server...  
01:19:57.294 Module build failed (from ./node_modules/postcss-loader/src/index.js):  
01:19:57.295 SyntaxError  
01:19:57.295 (15:32) Unknown word  
01:19:57.295   13 |   
01:19:57.295   14 | .search-view image{width: 35upx; height: 35upx;}  
01:19:57.295 > 15 | .search-view{font-size: 30upx; flex; font-weight: bold; }  
01:19:57.295      |                                ^  
01:19:57.295   16 | .search-text{padding: 0 10upx;}  
01:19:57.311   17 | 

根据错误提示中的箭头指示位置flex,
网上查明说是要flex的分号前面加冒号即可flex: ;
即使属性是空也有冒号分隔和分号结束保证格式完整性。

收起阅读 »

SVG图片不显示

SVG

不小心将src写scr,造成输入图片文件路径时都无任何提示。
所以编译后不显示SVG图片

<image scr="../../../static/coen/dingwei.svg" mode="widthFix"></image>  
<text class="search-text">百世华南电商基地</text>  
<text>>>></text>

更正后

<image src="../../../static/coen/dingwei.svg" mode="widthFix"></image>  
<text class="search-text">百世华南电商基地</text>  
<text>>>></text>

再次编译SVG图片正常显示

继续阅读 »

不小心将src写scr,造成输入图片文件路径时都无任何提示。
所以编译后不显示SVG图片

<image scr="../../../static/coen/dingwei.svg" mode="widthFix"></image>  
<text class="search-text">百世华南电商基地</text>  
<text>>>></text>

更正后

<image src="../../../static/coen/dingwei.svg" mode="widthFix"></image>  
<text class="search-text">百世华南电商基地</text>  
<text>>>></text>

再次编译SVG图片正常显示

收起阅读 »

#插件分享# 头像昵称填写能力适配】登录获取用户信息 - 武汉今鱼乐娱网络

微信登录 uniapp插件

欢迎大家使用,有任何问题可及时反馈出来。多多支持一下,谢谢~!
插件地址:
https://ext.dcloud.net.cn/plugin?id=11016

欢迎大家使用,有任何问题可及时反馈出来。多多支持一下,谢谢~!
插件地址:
https://ext.dcloud.net.cn/plugin?id=11016

热云-TrackingIOPlugin-打包报错

[PackagePath]/app/assets/supplierconfig.json [PackagePath]/wgtRoot/UNIE240ACE/nativeplugins/TrackingIOPlugin/android/assets/supplierconfig.json: Error: Duplicate resources

当你遇到这个文件冲突,你只需要删除supplierconfig.json即可,踩了2个小时坑,分享给大家

继续阅读 »

[PackagePath]/app/assets/supplierconfig.json [PackagePath]/wgtRoot/UNIE240ACE/nativeplugins/TrackingIOPlugin/android/assets/supplierconfig.json: Error: Duplicate resources

当你遇到这个文件冲突,你只需要删除supplierconfig.json即可,踩了2个小时坑,分享给大家

收起阅读 »

【不需要使用插件、不依赖第三方服务】uni-app端直传腾讯云对象存储 COS上传图片/视频/文件

需求:app(vue/nvue混合)有上传图片/视频/文件到腾讯云对象存储COS的需求,要求app内可以点对点直传,不依赖云端或者第三方服务。

发现问题:尝试了cos的网页端官方SDK无法运行;尝试了小程序的SDK,发现只能运行在Debug模式下,打包后无法运行;尝试了内嵌一个webview然后使用网页SDK,可以实现但是和app通信不方便太繁琐,对文件/图片/视频的选择功能受限(webview安全限制)。

解决方法:按照腾讯云官方文档:https://cloud.tencent.com/document/product/436/14690,使用uni.chooseFile/image/video方法,获取文件之后,按照链接内官方文档的要求构造请求参数,就可以使用标准的http方式上传了。

按照这个思路目前已经在app 内成功实现直传图片和文件功能,很方便,在这里分享给有需要的人,不用再重复尝试和劳动。

继续阅读 »

需求:app(vue/nvue混合)有上传图片/视频/文件到腾讯云对象存储COS的需求,要求app内可以点对点直传,不依赖云端或者第三方服务。

发现问题:尝试了cos的网页端官方SDK无法运行;尝试了小程序的SDK,发现只能运行在Debug模式下,打包后无法运行;尝试了内嵌一个webview然后使用网页SDK,可以实现但是和app通信不方便太繁琐,对文件/图片/视频的选择功能受限(webview安全限制)。

解决方法:按照腾讯云官方文档:https://cloud.tencent.com/document/product/436/14690,使用uni.chooseFile/image/video方法,获取文件之后,按照链接内官方文档的要求构造请求参数,就可以使用标准的http方式上传了。

按照这个思路目前已经在app 内成功实现直传图片和文件功能,很方便,在这里分享给有需要的人,不用再重复尝试和劳动。

收起阅读 »

关于HTML便签的拼接注意

html
1.标签属性在拼接属性值时可以打引号(单双引号都可以,最终显示时还是双引号),属性与属性要有空格,否则会被视为一体的  
列如:  
var tit ="23",alts = "提示";  
”<a title="+tit+"  alt="+alts+">“+"</a>" ---><a title="23" alt="提示"></a>  
var tit ="2 3",alts = "提示";  
”<a title="+tit+"  alt="+alts+">“+"</a>" ---><a title="2" 3 alt="提示"></a>//这种title是2,不是23;  
var tit ="2 3",alts = "提示";  
”<a title='"+tit+"'  alt='"+alts+"'>“+"</a>" ---><a title="23" alt="提示"></a>//加上引号后就不会出现上处问题了;  
2.标签属性值可以不分单双引号,但是建议用双引号,甚至可以不用打引号,但是属性与属性就必须要有空格,否则会被视为一体的。  
列如:  
<a title="23"  alt="提示"></a> --><a title="23" alt="提示"></a>  

<a title='23'  alt="提示"></a> --><a title="23" alt="提示"></a>  

<a title=23  alt=提示></a> --><a title="23" alt="提示"></a>  

<a title=23alt=提示></a> --><a title="23alt=提示"></a>  

<a title=23alt="提示"></a> --><a title="23alt="提示""></a>  

<a title=23alt='提示'></a> --><a title="23alt='提示'"></a>  

所以在标签拼接和写标签时要注意!!!  
继续阅读 »
1.标签属性在拼接属性值时可以打引号(单双引号都可以,最终显示时还是双引号),属性与属性要有空格,否则会被视为一体的  
列如:  
var tit ="23",alts = "提示";  
”<a title="+tit+"  alt="+alts+">“+"</a>" ---><a title="23" alt="提示"></a>  
var tit ="2 3",alts = "提示";  
”<a title="+tit+"  alt="+alts+">“+"</a>" ---><a title="2" 3 alt="提示"></a>//这种title是2,不是23;  
var tit ="2 3",alts = "提示";  
”<a title='"+tit+"'  alt='"+alts+"'>“+"</a>" ---><a title="23" alt="提示"></a>//加上引号后就不会出现上处问题了;  
2.标签属性值可以不分单双引号,但是建议用双引号,甚至可以不用打引号,但是属性与属性就必须要有空格,否则会被视为一体的。  
列如:  
<a title="23"  alt="提示"></a> --><a title="23" alt="提示"></a>  

<a title='23'  alt="提示"></a> --><a title="23" alt="提示"></a>  

<a title=23  alt=提示></a> --><a title="23" alt="提示"></a>  

<a title=23alt=提示></a> --><a title="23alt=提示"></a>  

<a title=23alt="提示"></a> --><a title="23alt="提示""></a>  

<a title=23alt='提示'></a> --><a title="23alt='提示'"></a>  

所以在标签拼接和写标签时要注意!!!  
收起阅读 »

<icon type="search" :size='15'...为什么在 APP端不显示

icon

<icon type="search" :size='15'...为什么在 APP端不显示
为什么只有[‘success’, ‘success_no_circle’, ‘warn’, ‘waiting’, ‘cancel’]

[ ‘info’, ‘download’, ‘search’,‘clear’]图标显示不了,不知道为什么

继续阅读 »

<icon type="search" :size='15'...为什么在 APP端不显示
为什么只有[‘success’, ‘success_no_circle’, ‘warn’, ‘waiting’, ‘cancel’]

[ ‘info’, ‘download’, ‘search’,‘clear’]图标显示不了,不知道为什么

收起阅读 »

uniapp 配置tabBar后微信小程序不显示导航栏

以下是tabbar配置,页面和图片资源都存在,尝试用真机调试也不显示底部导航栏

"tabBar": {  
        "custom":false,  
        // "position":"bottom",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "selectedColor": "#00aa00",  
        // "height": "60px",  
        "color": "#444444",  
        "list": [  
            {  
                "pagePath": "pages/pre/pre",  
                "iconPath": "static/images/pre.png",  
                "selectedIconPath": "static/images/pre_s.png",  
                "text": "预约"  
            },  
            {  
                "pagePath": "pages/user/user",  
                "iconPath": "static/images/me.png",  
                "selectedIconPath": "static/images/me_s.png",  
                "text": "我的"  
            }  
        ],  
    },  
继续阅读 »

以下是tabbar配置,页面和图片资源都存在,尝试用真机调试也不显示底部导航栏

"tabBar": {  
        "custom":false,  
        // "position":"bottom",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "selectedColor": "#00aa00",  
        // "height": "60px",  
        "color": "#444444",  
        "list": [  
            {  
                "pagePath": "pages/pre/pre",  
                "iconPath": "static/images/pre.png",  
                "selectedIconPath": "static/images/pre_s.png",  
                "text": "预约"  
            },  
            {  
                "pagePath": "pages/user/user",  
                "iconPath": "static/images/me.png",  
                "selectedIconPath": "static/images/me_s.png",  
                "text": "我的"  
            }  
        ],  
    },  
收起阅读 »

stopPropagation的替代方案

uni小程序

因为小程序端的click事件不能通过stopPropagation在监听事件里动态阻止事件冒泡,最多只能通过@click.stop去在catch阶段处理事件。在需要根据情况动态决定是否阻止事件冒泡时,只能通过v-if去生成两个不同的组件,一个@click另一个@click.stop,这样显然会加重资源消耗。

由此我实现了一个stopPropagation的替代方案,去动态的阻止冒泡。核心的原理是pointer-events这个css样式,这个样式可以用来控制元素是否可以响应事件。给需要stopPropagation的区域通过@click.stop去绑定事件,默认情况下会一直阻止事件冒泡。在需要事件冒泡的时候,就通过动态样式控制,把区域的pointer-events设为none,就隔绝了@click.stop的捕获处理。这样这个事件就可以向外冒泡了。

这个方案有一种情况是不适用的,就是stopPropagation区域内部有子元素需要绑定事件。因为即使给子元素的pointer-events设置成auto,事件仍会受@click.stop的影响,只能触发到区域这一层不能向外冒泡。

继续阅读 »

因为小程序端的click事件不能通过stopPropagation在监听事件里动态阻止事件冒泡,最多只能通过@click.stop去在catch阶段处理事件。在需要根据情况动态决定是否阻止事件冒泡时,只能通过v-if去生成两个不同的组件,一个@click另一个@click.stop,这样显然会加重资源消耗。

由此我实现了一个stopPropagation的替代方案,去动态的阻止冒泡。核心的原理是pointer-events这个css样式,这个样式可以用来控制元素是否可以响应事件。给需要stopPropagation的区域通过@click.stop去绑定事件,默认情况下会一直阻止事件冒泡。在需要事件冒泡的时候,就通过动态样式控制,把区域的pointer-events设为none,就隔绝了@click.stop的捕获处理。这样这个事件就可以向外冒泡了。

这个方案有一种情况是不适用的,就是stopPropagation区域内部有子元素需要绑定事件。因为即使给子元素的pointer-events设置成auto,事件仍会受@click.stop的影响,只能触发到区域这一层不能向外冒泡。

收起阅读 »

如果动态修改uni.scss、动态自定义全页面的css颜色方案

scss 主题

动态设置主题 css,找了些方案,感觉这个最方便,分享给大家~点个赞吧!

  1. 动态设置uni.scss(这个官方不支持,所以换方案)
  2. 用js控制css变量(最佳最好的方向)

那我们就用第二种方案,如果js控制css呢? 上方案!

首先要在顶部声明:<component is="style">:root {--bg-color: {{bgColor}}}</component> (为什么用这个 去看下vue文档)

然后具体看代码

<template>  
    <view class="content">  
        <component is="style">:root {--bg-color: {{bgColor}}}</component>  
        <!-- 布局 -->  
        <view class="theme">测试</view>  
        <view>文字1234</view>  
        <view @click="btn">更改</view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                bgColor: "#4FAD50",  
            }  
        },  
        methods: {  
            btn() {  
                this.bgColor = 'red'  
            },  
        }  
    }  
</script>  

<style lang="scss" scoped>  
    .theme {  
        color: var(--bg-color);  
    }  
</style>  

这样,当你点击更改的时候 颜色就被更改了!很方便 很灵活!

页面的侵入也不复杂 加个component, 给对应的文字加个css .theme 解决!后续通过vuex想怎么改 怎么改!

好了~方案到此结束! 点个赞吧!~

继续阅读 »

动态设置主题 css,找了些方案,感觉这个最方便,分享给大家~点个赞吧!

  1. 动态设置uni.scss(这个官方不支持,所以换方案)
  2. 用js控制css变量(最佳最好的方向)

那我们就用第二种方案,如果js控制css呢? 上方案!

首先要在顶部声明:<component is="style">:root {--bg-color: {{bgColor}}}</component> (为什么用这个 去看下vue文档)

然后具体看代码

<template>  
    <view class="content">  
        <component is="style">:root {--bg-color: {{bgColor}}}</component>  
        <!-- 布局 -->  
        <view class="theme">测试</view>  
        <view>文字1234</view>  
        <view @click="btn">更改</view>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                bgColor: "#4FAD50",  
            }  
        },  
        methods: {  
            btn() {  
                this.bgColor = 'red'  
            },  
        }  
    }  
</script>  

<style lang="scss" scoped>  
    .theme {  
        color: var(--bg-color);  
    }  
</style>  

这样,当你点击更改的时候 颜色就被更改了!很方便 很灵活!

页面的侵入也不复杂 加个component, 给对应的文字加个css .theme 解决!后续通过vuex想怎么改 怎么改!

好了~方案到此结束! 点个赞吧!~

收起阅读 »