[英]How do I prevent conflict between object and function names in different .js files
我剛剛將谷歌分析添加到我的網站。 大約 25% 的時間在加載時,我從谷歌分析文件中得到以下錯誤:
未捕獲的類型錯誤:a.slice 不是 function
我相信它是在站點上的兩個.js
文件(谷歌分析 js 文件)中的對象和函數之間的命名干擾,我不確定還有哪個。 當我在谷歌分析文件中添加斷點時,我可以看到發生錯誤時, a
正在引用另一個文件中的 object。 它顯示在調試器中的 scope>local 下,並說它是來自 page.js 的page.js
。 我已經瀏覽了那個文件,並確保沒有以它命名的對象或函數。 我相信它實際上來自我正在使用的leaflet.js
。 關於哪個加載首先獲得名稱似乎是一種競爭條件。 如果分析文件首先加載,一切都很好並且一切正常,否則我會收到錯誤消息。
我無法更改 leaflet 文件,我無法控制這兩個文件。 有什么方法可以防止兩個文件之間的沖突嗎?
嗯......這不是一個優雅的解決方案,但您可以在分析加載后強制加載 leaflet。
仍然。 Stackoverflow 使用分析,我沒有看到一個全局a
object 聲明。 而且我已經用分析工作了一段時間,從來沒有見過它聲明像 a 這樣模棱兩可的東西。 在全局 scope 中有類似a
東西讓我想起了全局 scope 中的縮小的、未封閉的代碼。 這可能是你的問題。
如果通過它部署 leaflet,這可能來自 GTM。
無論如何,你沒有做足夠的調試。 嘗試阻止對某些 JS 文件的請求,以准確找出導致競爭條件的庫。 還要確保 GTM 不是這里的情況,因為它經常在那里發生,因為人們傾向於部署未封閉但縮小的代碼的自定義 html 標簽。 正是造成這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.