上週在實現一個聊天的業務時,測試發現該功能在IE和Edge下是不能實現。在查看報錯以後發現報錯 Unhandled promise rejection ReferenceError: 'TextEncoder' is not defined
。 原來是stompJs使用了TextEncoder方法,但IE和Edge的JavaScript運行環境不支持該方法。 我找到了如下幾種方法。 只針對SPA應用node
若是你的NodeJs版本升到了v11,那麼node的運行環境是支持TextEncoder方法的。可是若是你的項目的nodeJs版本低於v11,能夠安裝moduletext-encodin
。web
$ npm install text-encoding
npm
加在入口文件promise
// These have been added in NodeJS v11, so good idea is to check first
if (typeof TextEncoder !== 'function') {
const TextEncodingPolyfill = require('text-encoding');
window.TextEncoder = TextEncodingPolyfill.TextEncoder;
window.TextDecoder = TextEncodingPolyfill.TextDecoder;
}
複製代碼
由於第一種方法解決了個人方法,因此一下方法沒有去實踐。bash
據瞭解有兩個備用庫websocket
和ws
能夠使用。websocket
$ npm install websocket
socket
在全局對象global
中添加ide
Object.assign(global, { WebSocket: require('websocket').w3cwebsocket });
測試
$ npm install ws
ui
Object.assign(global, { WebSocket: require('ws') });