vitepress builld报错

问题:build时报错:document/window is not defined。

背景:使用vitepress展示自定义的组件,之前build是没有问题了,由于新增了qr-code以及quill富文本组件,导致打包时报错。

原因vitepress官方文档

在这里插入图片描述
在这里插入图片描述
由于使用的第三方组件内部会使用到document和window,vitepress打包的时候,在服务端渲染的情况下没有document和window,就导致的打包报错。

官方的这种两种解决方案,在项目里面试了下还是不行,不知道是不是因为vitepress的版本问题,当前使用的是1.0.0-alpha.13.。由于是内网,没有升级成功,这两种方法就放弃了。

解决方法
在我们封装组件库的地方使用vue的动态组件进行二次的封装。

<template>
	<div v-if="isClient">
		<component :is="qrCode" v-bind="$attrs"></component>
    </div>
</template>
<script lang="ts" setup>
import {shallowRef,onMounted,ref} from 'vue';
defineOptions({name:'qrCode'})

const isClient = ref(false);
const qrCode = shallowRef(null);

onMounted(()=>{
	if (!import.meta.env.SSR){
		import('./index.vue').then(m=>{
			qrcode.value = m.default;
		});
		isClient.value = true;
    }
})

</script>
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,问题可能是在打包过程中,vitepress遇到了一个空值的情况,导致报错"TypeError: Cannot read properties of null (reading 'alt')"。这个错误可能是因为在渲染模块时,对于某个属性进行了读取,而该属性的值为空(null)。为了解决这个问题,可以通过在加载该模块时添加一个判断语句来避免渲染空值的情况。具体的做法是,在li标签中添加一个v-if的判断语句,当goods为空时,取消对该模块的渲染。以下是修改后的代码示例: ```html <li @click="gotoProduct" v-if="goods != null"> <img v-bind:src="goods<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [关于Error in render: "TypeError: Cannot read property '0' of null"问题的解决方法](https://blog.csdn.net/qq_42985101/article/details/102056925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vant轮播图组件滑动报错Uncaught TypeError: Cannot read property ‘width‘ of null解决方案](https://blog.csdn.net/qq_37493515/article/details/117132216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值