Nuxt.js 报错 window is not defined || document is not defined

Nuxt.js 报错 window is not defined || document is not defined

情况1: 自己的写的函数里包含window等

报错原因:因为Nuxt为服务器端渲染,所以在编译打包时会区分服务端渲染还是客户端渲染(浏览器),在vue文件中使用window对象报错的原因是,webpack将其加入了服务端脚本中,所以会报错。所以在使用时,应该判断当前代码环境是否是浏览器环境。

解决方案:

1.通过 process.client 判断

if (process.client) {
  ... // 这里就是操作window对象的代码
}

2.将涉及到window的写在 mounted 生命周期里

mounted() {
	// window ...
}

3.使用 no-ssr 组件

<template>
    <div>
        <kafuuchino/>
        <no-ssrplaceholder="Loading...">
            <!-- 此组件仅在客户端呈现 -->
            <comments/>
        </no-ssr>
    </div>
</template>
情况2: 第三方插件里包含window等

报错原因:还有一种就是项目里会引入很多第三方组件,这些组件里也有可能会包含window等一些服务端不支持的内容

解决方案:

1.将插件设置为客户端渲染
将 插件 文件路径配置到 nuxt.config.js 的 plugins 属性中,示例如下

module.exports = {
	 //其它配置项...
	plugins: [
	    { 
	    	src: '~/plugins/kafuuchino',
	    	ssr: false // 此处的 ssr:false 就是将其改为非服务器端渲染
	    } 
	],
}

修改完配置文件需要重新启动项目!

参考文章
nuxtjs在vue组件中使用window对象编译报错的解决方法

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当在Nuxt使用window对象时,会报错"window is not defined"的错误。这是因为Nuxt是服务器端渲染的框架,编译打包时会区分服务端渲染和客户端渲染。在vue文件中使用window对象会导致报错,因为webpack将其加入了服务端脚本中。为了解决这个问题,可以在使用window对象之前判断当前代码环境是否是浏览器环境。另外,如果在引入工具包时报错,可以将工具包进行拆分,只引入需要的部分。还可以使用no-ssr组件来解决问题,该组件只在客户端呈现,可以避免在服务器渲染时出现window对象未定义的错误。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Nuxt.js 报错 window is not defined || document is not defined](https://blog.csdn.net/SR1918/article/details/120880043)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [nodejs.ReferenceError:window is not defined](https://blog.csdn.net/qq_46595660/article/details/125418769)[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^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值