PS:個人博客原文 - Uncaught TypeError: Cannot convert object to primitive
最近發現我的博客頁面移動端上下拉菜單失效了,調試了一下,只要一點擊下拉菜單就會報這個錯誤:
下拉菜單使用 bootstrap,部分代碼如下:
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item ">
<a class="nav-link" href="/program">編程技術</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/tips">折騰筆記</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="/about">關於</a>
</li>
</ul>
</div>
我百思不得其解,這里的代碼已經很久沒有修改過了,怎么會突然報錯呢?又對比了一下 bootstrap 上的折疊導航欄示例代碼,發現是沒有問題的。
。。。
搜索了一下,發現有人已經提了這個問題:
- https://stackoverflow.com/questions/61177140/uncaught-typeerror-cannot-convert-object-to-primitive-valuezone-evergreen-js1
- Bootstrap v4.4.1 collapse doesn't work with jQuery v3.5.0
終於找到了原因 可能是最近發布的 jQuery 3.5 導致的問題,jQuery 3.5 會導致 bootstrap 4 collapse 的功能失效。
解決 那么把依賴換成上個版本 jQuery 3.4.1,就可以臨時解決問題了。
看了引入jQuery的地方:
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
改為以下就可以了。
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>