stompJs出現TextEncoder is not defined解決方法

介紹

上週在實現一個聊天的業務時,測試發現該功能在IE和Edge下是不能實現。在查看報錯以後發現報錯 Unhandled promise rejection ReferenceError: 'TextEncoder' is not defined。 原來是stompJs使用了TextEncoder方法,但IE和Edge的JavaScript運行環境不支持該方法。 我找到了如下幾種方法。 只針對SPA應用node

正文

In NodeJs

若是你的NodeJs版本升到了v11,那麼node的運行環境是支持TextEncoder方法的。可是若是你的項目的nodeJs版本低於v11,能夠安裝moduletext-encodinweb

$ npm install text-encodingnpm

加在入口文件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;
}
複製代碼

WebSocket

由於第一種方法解決了個人方法,因此一下方法沒有去實踐。bash

據瞭解有兩個備用庫websocketws能夠使用。websocket

  • websocket

$ npm install websocketsocket

在全局對象global中添加ide

Object.assign(global, { WebSocket: require('websocket').w3cwebsocket });測試

  • ws

$ npm install wsui

Object.assign(global, { WebSocket: require('ws') });

相關文章
相關標籤/搜索