VUE 專案在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決
問題現象
專案使用vue/cli3腳手架搭建的前端專案,vue版本為2.6.10。
browserslist的配置如下:
[ "> 1%","last 2 versions"]
但開發環境的IE11開啟顯示白屏,F12開啟顯示:
分析過程
5306行顯示 "./node_modules/[email protected]@debug/src/browser.js"這個路徑報錯,由於eval()包含的程式碼中有ES6的語法,IE不支援,查了網上很多資料都說使用babel-polyfill來解決。
現象一:IE不支援ES6語法
- Vuex requires a Promise polyfill in this browser
- "“Promise”未定義"
以上現象為IE不支援Promise,即不支援ES6語法。出現IE白屏和報SCRIPT1002錯誤的大都是此原因。當前處理起來也比較簡單,網上大部份資源都可以找到解決方案,就是使用babel-polyfill。
首先安裝babel-polyfill
npm install --save-dev babel-polyfill
然後在babel.config.js修改presets,內容如下:
// presets: [["@vue/app",{useBuiltIns: "entry",}]],// 此為vue/cli3 presets: [["@vue/cli-plugin-babel/preset",// 此為vue/cli4
解決方法一
main.js的第一行引入:
import 'babel-polyfill';
解決方法二:
vue cli官方推薦使用,前提是package.json安裝了core-js:
import 'core-js/stable';import 'regenerator-runtime/runtime';
解決方法三:
在vue.config.js裡新增如下程式碼:
configureWebpack: config => { config.entry.app = ["babel-polyfill","./src/main.js"]; },
現象二:第三方外掛引入導致
由於專案使用了長連線庫socket.io-client和vue-socket.io-extended,在main.js是中使用方法是:
import VueSocketIOExt from 'vue-socket.io-extended'; import io from 'socket.io-client'; const socket = io(process.env.VUE_APP_IO_URL); Vue.use(VueSocketIOExt,socket);
我把這四行程式碼註釋掉之後神奇的IE不白屏了,但業務需要IE11是不能放棄長連線的,經過嘗試發現是socket.io-client這個外掛在使用import引入時導致的問題。
解決方法一:
1、將main.js調整為:
import VueSocketIOExt from 'vue-socket.io-extended'; const socket = io(process.env.VUE_APP_IO_URL); Vue.use(VueSocketIOExt,socket);
2、socket.io-client改為在public/index.html檔案head中引入:
<script src="https://cdn.bootcdn.net/ajax/libs/socket.io/2.3.0/socket.io.slim.js"></script>
解決方法二:
保留main.js對第三方外掛的引入不變,只需要在vue.config.js的transpileDependencies新增要顯示依賴的外掛即可:
transpileDependencies:['socket.io-client'],// transpileDependencies:['*'],
transpileDependencies的作用是:預設情況下 babel-loader 會忽略所有 node_modules 中的檔案。如果你想要通過 Babel 顯式轉譯一個依賴,可以在這個選項中列出來。
現象三:本地環境正常,但生產環境仍舊白屏
發現引入一個多語言檔案時,JSON沒有使用合適的逗號導致,如下:
當我我第8行的逗號去掉後,奇蹟般正常了。
另外,如果前端工程引入的檔案不在工程的根目錄下,也會出現這種情況。
到此這篇關於VUE 專案在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決的文章就介紹到這了,更多相關VUE IE11白屏報錯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!