最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue報錯Failed to execute 'appendChild' on 'Node'解決

 更新時間:2022年11月16日 15:49:47   作者:muio  
這篇文章主要為大家介紹了vue報錯Failed to execute 'appendChild' on 'Node'解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、問題描述

某天在開發(fā)需求時發(fā)現(xiàn),業(yè)務頁面上報告了一個Script error。

由于vconsole看不到詳細報錯信息,于是在chrome上打開,具體報錯信息如下:

Uncaught DOMException: Failed to execute 'appendChild' on 'Node': This node type does not support this method. at Object.appendChild 

看起來是vue2.6.12包里報了一個錯誤,但從報錯提供的信息看不出來那行代碼引發(fā)的報錯。

二、解決過程

1、google

解決問題的第一步往往是先看看“別人咋解決的”:把錯誤信息ctrl+c ctrl+v到瀏覽器里google一下先。

stackoverflow里看到的第一個解決方案是通過添加client-only標簽:

<template>
  <div id="container">
     <client-only>
        <Components>
     </client-only>
  <div>
</template>

在項目里也照著這個方法在App.vue里添加client-only標簽,重試后發(fā)現(xiàn)沒有效果,依然報錯。

也有說法說是由于標簽的關閉寫法導致的Hydration errors

于是我搜索了下項目代碼,發(fā)現(xiàn)確實有幾處標簽是使用類似 <span class="split" /> 寫法進行關閉的。抱著嘗試的心理,我把這些寫法都改成了<span class="split"></span>。

然而重試后依然沒有解決這個報錯。

2、斷點調試

既然網(wǎng)上的方法沒有效果,那只能打斷點看看是否能找到報錯的具體位置。

從錯誤報告點擊進詳情,可以看到是vue.min.js文件的appendChild拋出的錯誤。

在這里打一個斷點,并運行:

第一次經過此處:e是一個div,t是一個#comment的node節(jié)點,此時還沒有拋出錯誤。

第二次經過此處:e是一個div,t是一個text元素,此時還沒有拋出錯誤。

第三次經過此處:e是#comment的node節(jié)點,t是一個按鈕的div元素,此處拋出了對應的錯誤。

也就是在第三次運行appendChild時,由于e此時是一個node節(jié)點,不支持appendChild方法,于是vue拋出了Uncaught DOMException: Failed to execute 'appendChild' on 'Node': This node type does not support this method.錯誤。

在項目里搜索comment,發(fā)現(xiàn)并沒有找到相應的代碼。于是從第三次appendChild的t參數(shù)入手。

可以看出來這是一個按鈕元素,并且按鈕文字內容是“我知道了”。在項目里搜索“我知道了”,可以找到兩處符合條件的元素。根據(jù)此時的頁面位置可以排除captcha組件,所以鎖定了verifyResult組件里的“我知道了”按鈕。

這處按鈕的html代碼如下:

<q-button
  v-if="resultInfo.showBtn"
  type="primary"
  @click="resultInfo.callback"
>
  {{ resultInfo.btnText }}
</q-button>

先把這部分內容直接注釋掉看看。 發(fā)現(xiàn)這個報錯確實不見了??梢源_認,這個按鈕就是報錯的源頭。

3、定位

那這個按鈕到底有啥問題呢?看起來就是一個平平無奇的確認按鈕呀。

從剛剛打斷點的時候可以看到,此時按鈕的text正常取到了"我知道了"文案,且報錯信息是在進行appendChild,也就是添加元素的動作時。而這個按鈕里用到了v-if,合理懷疑是這個v-if引起的。于是嘗試把v-if去掉或改成一個常量,發(fā)現(xiàn)頁面也不會報錯。

所以可以確定,這里的報錯是由于v-if的參數(shù)引起的。

這里v-if的參數(shù)是:resultInfo.showBtn

這里resultInfo是一個計算參數(shù):

showBtn是通過另一個計算參數(shù):isMobile來控制的。

看來問題就在isMobile上。

通過打印isMobile發(fā)現(xiàn),在node時由于沒有window,所以isMobile=false,而頁面渲染時isMobile=true。

所以這里isMobile有一個從false -> true的變化。

所以這里按鈕元素經歷了從無到有的過程,在appendChild的時候node節(jié)點就拋出了錯誤。

4、解決

這里解決方案的主要就是去掉這個從無到有的過程,或者把這個變化后移。

  • 去掉這個從無到有的過程:把v-if改成v-show。
  • 把這個變化后移:isMobile不使用計算參數(shù),在默認初始化為false,在created時再進行賦值。
created() {
    this.isMobile = browser.isMobile();
}

兩種方法都可以解決,我這里使用了第一種解決方案,報錯不再出現(xiàn),且頁面按鈕可以正常顯示~

以上就是vue報錯Failed to execute 'appendChild' on 'Node'解決的詳細內容,更多關于vue 報錯解決的資料請關注腳本之家其它相關文章!

相關文章

  • vue+element-ui中form輸入框無法輸入問題的解決方法

    vue+element-ui中form輸入框無法輸入問題的解決方法

    很多初次接觸element-ui的同學,在用到element form組件時可能會遇到input框無法輸入文字的問題,下面這篇文章主要給大家介紹了關于vue+element-ui中form輸入框無法輸入問題的解決方法,需要的朋友可以參考下
    2023-04-04
  • vue.js中父組件調用子組件的內部方法示例

    vue.js中父組件調用子組件的內部方法示例

    這篇文章主要給大家介紹了關于vue.js中父組件調用子組件內部方法的相關資料,文中給出來了詳細的示例代碼供大家參考學習,對大家的學習或者工作具有一定的參考價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-10-10
  • 詳解eslint在vue中如何使用

    詳解eslint在vue中如何使用

    這篇文章主要為大家介紹了eslint在vue中如何使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 詳細聊聊Vue生命周期的那些事

    詳細聊聊Vue生命周期的那些事

    這篇文章主要給大家介紹了關于Vue生命周期的那些事,在使用vue開發(fā)過程中經常會接觸到生命周期的問題,但對于每個鉤子函數(shù)都做了什么,應用場景比較模糊,希望通過這次梳理讓自己清楚一些,需要的朋友可以參考下
    2021-09-09
  • vue前端實現(xiàn)dhtmlxgantt甘特圖代碼示例(個人需求)

    vue前端實現(xiàn)dhtmlxgantt甘特圖代碼示例(個人需求)

    這篇文章主要介紹了如何使用dhtmlx-gantt和chinese-days插件在項目中實現(xiàn)節(jié)假日置灰顯示的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • 使用vue實現(xiàn)pdf預覽功能的方法

    使用vue實現(xiàn)pdf預覽功能的方法

    許多朋友想要材料上傳之后點擊預覽實現(xiàn)在瀏覽器上預覽的效果,所以本文將給大家介紹如何使用vue實現(xiàn)pdf預覽功能,文中有實現(xiàn)代碼,有需要的朋友可以參考閱讀下
    2023-08-08
  • vue2.0在沒有dev-server.js下的本地數(shù)據(jù)配置方法

    vue2.0在沒有dev-server.js下的本地數(shù)據(jù)配置方法

    這篇文章主要介紹了vue2.0在沒有dev-server.js下的本地數(shù)據(jù)配置方法的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • vue中$emit的用法詳解

    vue中$emit的用法詳解

    這篇文章主要介紹了vue中$emit的用法詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 在vue3中使用import.meta.env

    在vue3中使用import.meta.env

    這篇文章主要介紹了在vue3中使用import.meta.env方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue語法之拼接字符串的示例代碼

    vue語法之拼接字符串的示例代碼

    本篇文章主要介紹了vue語法之拼接字符串的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

且末县| 清远市| 信丰县| 丹棱县| 于都县| 澎湖县| 红河县| 库尔勒市| 延寿县| 彭泽县| 温宿县| 卢龙县| 东辽县| 健康| 阿拉善盟| 余姚市| 许昌县| 海门市| 舒兰市| 宕昌县| 卓尼县| 南开区| 博白县| 康保县| 大足县| 广宁县| 永丰县| 高雄市| 凤庆县| 泸溪县| 宁国市| 陈巴尔虎旗| 余庆县| 福州市| 延川县| 河源市| 汕头市| 南宫市| 定安县| 肥乡县| 新建县|