Webpack編譯出錯“Critical dependency: the request of a dependency is an expression”解決辦法
當使用webpack進行打包時,如果遇到如下的require語法,
var mx = require("hpargxm".split("").reverse().join(""));
編譯將出錯,會提示“Critical dependency: the request of a dependency is an expression”
這種require語法是正確的,但webpack不能處理require中的表達式,只能識別字符串,如:
var mx = require('mxgraph');
這是因為,webpack要判斷require引用的文件,并讀取和合并文件內容。由于webpack無法執行js代碼,所以,當require的內容是表達式時,webpack無法正確獲取文件信息。
這屬于webpack無奈的bug,解決辦法是需要webpack具備執行js代碼能力,比如可以內置一個javascript小引擎,以便解析表達式內容。
在實際的編程中,如果遇到這種問題,只需修改require中的表達式為字符串即可。
另外,當進行JS代碼混淆時,也常會對require中的字符串內容進行加密,也會引發webpack的這個bug,解決辦法是:規避指定的字符,比如使用JShaman進行JS代碼混淆時,可以配置“保留字”,對指定的字符串不進行加密。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.