簡體   English   中英

當我將腳本類型設置為模塊時,為什么我的 D3 代碼會中斷?

[英]Why does my D3 code break when I set the script type to module?

我正在開發一個使用 Javascrpt、jQuery 和 Vite.js 構建的項目。 我的同事使用 D3(美國各州地圖)構建了數據可視化,我需要在項目中的特定頁面上實現該可視化。 他們使用測試數據構建了組件,我的工作基本上是將組件加載到一個頁面上,並將其從 API 調用返回的實際數據傳遞給它。

測試項目中的所有內容都運行良好,但是當我嘗試將此代碼實現到項目中的腳本文件中時——實際上是從工作版本中復制和粘貼——我收到一條錯誤消息,指出無法讀取某些屬性。 在調試了一段時間后,我隨機嘗試從 HTML 中的腳本標記鏈接中刪除type="module" ,然后,一切正常。 有誰知道為什么會這樣? 當腳本類型設置為模塊時,我無法運行此代碼,除非我需要將腳本類型設置為模塊,因為我正在為頁面的其他方面導入大量組件。

使用 CodePen 的設置方式,我無法復制該問題,因為 HTML 和 JS 文件是自動鏈接的。 但是如果你把這段代碼復制到你的編輯器中,然后在 html 中,將 JS 文件設置為一個模塊`你會看到問題。

謝謝。 我完全不知道在這里做什么。 我可以將所有 D3 代碼放在它自己的腳本文件中,但是如果它不是模塊,我就無法從其他文件中傳遞變量。

根據評論,我原始代碼中的以下幾行在嚴格模式下不起作用:

this.uStates = uStates;
this.uStatePaths = uStatePaths;

修復很簡單,我只需要編寫以下代碼:

window.uStates = uStates;
window.uStatePaths = uStatePaths;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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