vuepress引入vue-qr组件后build报错navigator is not defined问题
时间:2022-07-24
本文章向大家介绍vuepress引入vue-qr组件后build报错navigator is not defined问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
记下vuepress引入外部组件后build报错问题
最近博客中集成了vue-qr组件用于生成访问的二维码.
组件安装
npm install vue-qr
自定义组件代码
Qrcode.vue
<template>
<div class="vue-qrcode-box">
<vue-qr :text="qrUrl" :size="114" :margin="5"></vue-qr>
</div>
</template>
<script>
import vueQr from 'vue-qr'
export default {
name: 'qr-code',
components: {
vueQr
},
data() {
return {
qrUrl: ''
}
},
mounted: function() {
const that = this
setTimeout(() => {
that.qrUrl = location.origin + that.$route.path
}, 0)
},
watch: {
$route(to, from) {
if (from.path != to.path) {
this.qrUrl = location.origin + this.$route.path
}
}
},
methods: {},
created() {}
}
</script>
<style scoped>
.vue-qrcode-box img {
width: 100%;
}
</style>
组件引用
如果直接引入会报如下错误
原因:所有的页面在生成静态 HTML 时都需要通过 Node.js 服务端渲染,所有的 Vue 相关代码都应当遵循 编写通用代码 的要求。 要确保只在
beforeMount
或者mounted
访问浏览器 / DOM 的 API。
如果一些组件或库在导入时就试图访问浏览器 API ,需要在合适的生命周期钩子中动态导入。
这里引用的 vue-qr
应该是使用了 navigator 的 API,所以就选择在单页的mounted里动态引入的方式来解决构建时的报错问题:
<template>
<component v-if="qrcode" :is="qrcode"></component>
</template>
<script>
export default {
data() {
return {
qrcode: null
}
},
mounted () {
import('./Qrcode').then(module => {
this.qrcode = module.default
})
}
}
</script>
效果
参考资料
- Quartz.NET的管理工具
- Python-执行系统命令
- css3 UI 修饰——回顾
- Windows Phone 7实战 第一天 设计启动页面和应用程序图标
- css3响应式布局设计——回顾
- Windows Phone 7 实战第二天 二维码QRcode
- Python-面向对象编程
- SQL Server 2012将与Hadoop无缝集成
- 系统性能优化一例
- Android中include标签的使用
- css3弹性盒子模型——回顾。
- confluence与jira账号对接、查看到期时间及问题总结
- 物联网、人工智能时代来临五大隐忧不可不提防
- Contact Manager Web API 示例[1]CRUD 操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ExpiringMap,一个可以用于缓存的 Map
- Leetcode 121. 买卖股票的最佳时机 (DP,模拟)
- MQ 系列之初识消息中间件
- Leetcode 第23场双周赛C 5361. 圆和矩形是否有重叠 (计算几何 初中数学)
- vue-cli 4 快速构建一个 Vue 项目
- SpringDataJPA 系列之快速入门
- Leetcode 第23场双周赛B 5362. 构造 K 个回文字符串(map,思维)
- Java 水题系列(1)数字金字塔
- Leetcode 836. 矩形重叠
- 详解 Vue 目录及配置文件之 config 目录
- Nginx 搭建静态资源服务
- vue 使用自定义字体
- vue 跨域问题
- Shell 递归查找文件
- element-ui 实现嵌套表格