日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 Vue 正文

VUE 項目在IE11白屏報錯 SCRIPT1002: 語法錯誤的解決_vue.js

作者:chenjunbiao ? 更新時間: 2022-04-03 Vue

問題現象

項目使用vue/cli3腳手架搭建的前端項目,vue版本為2.6.10。

browserslist的配置如下:

[ "> 1%", "last 2 versions"]

但開發環境的IE11打開顯示白屏,F12打開顯示:

分析過程

5306行顯示 "./node_modules/_debug@4.1.1@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", {useBuiltIns: "entry",}]],// 此為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行的逗號去掉后,奇跡般正常了。
另外,如果前端工程引入的文件不在工程的根目錄下,也會出現這種情況。

原文鏈接:https://segmentfault.com/a/1190000025136115

欄目分類
最近更新