TypeError: ReconnectingWebSocket не является конструктором в браузере - PullRequest
0 голосов
/ 14 февраля 2019

Я не могу создать экземпляр ReconnectingWebSocket при запуске через браузер после версии 3.2.2.До версии 3.2.2 и равных все работало нормально.Но теперь я получаю следующую ошибку:

client.ts:13 Uncaught TypeError: ReconnectingWebSocket is not a constructor
    at Object.<anonymous> (client.ts:13)
    at __webpack_require__ (bootstrap a23e24d7998736253177:19)
    at Object.<anonymous> (main.ts:9)
    at __webpack_require__ (bootstrap a23e24d7998736253177:19)
    at bootstrap a23e24d7998736253177:62
    at bootstrap a23e24d7998736253177:62

Мой код client.ts:

import { listen } from 'vscode-ws-jsonrpc';
const ReconnectingWebSocket = require ('reconnecting-websocket');

const socketOptions = {
    WebSocket: undefined,
    maxReconnectionDelay: 10000,
    minReconnectionDelay: 1000,
    reconnectionDelayGrowFactor: 1.3,
    connectionTimeout: 10000,
    maxRetries: Infinity,
    debug: false
};
const webSocket = new ReconnectingWebSocket('ws://localhost:3000/', undefined, socketOptions);

listen({
    webSocket,
    onConnection: connection => {
        console.log('connected');
    }
});

Я проверил # 95, но "esModuleInterop": true не работает для меня.

Вот мой tsconfig.json:

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "declarationMap": true,
        "inlineSources": false,
        "declaration": true,
        "stripInternal": true,
        "lib": [
          "es6",
          "dom"
        ],
        "strict": true,
        "noImplicitReturns": true,
        "noUnusedLocals": true,
        "rootDir": "src",
        "outDir": "lib",
        "baseUrl": ".",
        "skipLibCheck": true,
        "alwaysStrict": true,
        "esModuleInterop": true
    },
    "include": [
    "src"
    ]
}

Еще одна вещь, выполнение того же кода client.ts из терминала node lib/client.js работает нормально.Но то же самое дает ошибку в браузере.При отладке в консоли браузера typeof ReconnectingWebSocket показывает, что это объект, а не функция.Но typeof ReconnectingWebSocket.default дает как функцию.

Итак, я использую ReconnectingWebSocket с ключевым словом default, как

const webSocket = new ReconnectingWebSocket('ws://localhost:3000/', undefined, socketOptions).default;

Теперь он отлично работает в браузере.Но то же самое выдает ту же ошибку при запуске из терминала.

Пожалуйста, помогите, как использовать ReconnectingWebSocket после версии 3.2.2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...