我正在將一個舊的大型 symfony web 應用程式遷移到 webpack encore。目前,我安裝了所有的js庫,但是發現了一個問題: Uncaught ReferenceError: xxx is not defined
我的結構是下一個。
- 我在 common.js 中匯入了我在很多頁面中使用的 js 庫(如 resize-sensor)。
- base.html.twig 我呼叫 {{ encore_entry_script_tags('common') }}
- 擴展 base.html.twig 的最終視圖
在 common.js 中我加載庫:Ej。匯入“調整大小傳感器”;
在我嘗試使用的視圖中: new ResizeSensor(jQuery('#div-left'), function(){fixElements();});
我收到此錯誤:“未捕獲的 ReferenceError:未定義 ResizeSensor”
我必須全域匯入 jquery、highcharts 和confirmation2,但我不確定我是否想對所有庫都這樣做。
那么有什么方法可以從基礎擴展的所有視圖中從 common 中匯入所有內容嗎?
uj5u.com熱心網友回復:
在我嘗試使用的視圖中: new ResizeSensor(jQuery('#div-left'), function(){fixElements();});
在 js 檔案中匯入庫不會在全域范圍內“可用”。所以你不能只在你的視圖中使用它們
{% block javascripts %}
{{ parent() }}
<script>
$(function(){
new ResizeSensor(jQuery('#div-left'), function(){fixElements();});
});
</script>
{% endblock %}
它們實際上僅在該檔案(common.js)中可用
您可以嘗試使用特殊global.語法,或者嘗試將它們設為autoProvidedVariables. 你必須玩弄最適合你的
global
// in your common.js
import ResizeSensor from 'resize-sensor';
global.ResizeSensor = ResizeSensor; // now is ResizeSensor available globaly
autoProvideVariables
// in webpack.config.js
.autoProvidejQuery()
.autoProvideVariables({
ResizeSensor: require.resolve('resize-sensor'),
}
現在您可以在您的視圖中使用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314041.html
標籤:javascript symfony 网络包
