以在vue中引入mui第三方庫為例:
雖然針對vue,有單獨的vue-mui庫可以使用,但因習慣了直接使用第三方庫,且單獨的mui更全面一點,是以想要作為第三方js庫來引用。
問題: 在vue的main.js中引入mui.min.js時,報錯。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SMjBzY4UDM4Q2NmRjNxMTZmNjNzMWMxYDZxEGM5YGM48CXzAzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.png)
如上,單獨在main.js或者任意元件中通過import 方式引入mui時都會報這個錯。
原因:babel在将js檔案轉碼為ES5時,預設使用嚴格模式,而在嚴格模式下,為了安全起見是不能用caller,callee,arguments等屬性的。
解決:修改bablerc檔案的配置,讓項目忽略第三方js的轉碼。
.babelrc檔案:
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["istanbul"]
}
},
"ignore": [
"./src/assets/libs/*.js"
]
}
此外,引入第三方庫,如果設定了文法檢查也會各種檢查第三方js的文法錯誤。進而報錯
通過修改eslintignor檔案,将對應目錄下的js忽略即可
src/assets/libs/*.js
非學,無以緻疑;非問,無以廣識