簡體   English   中英

如何防止 object 和 function 名稱在不同的.js 文件中發生沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM