Estoy tratando de importar el paquete npm superagent-throttle en mi proyecto de TypeScript , pero cuando lo hago, aparece este mensaje:
Uncaught TypeError: Class extends value #<Object> is not a constructor or null Si uso require funciona bien:
const Throttle = require("superagent-throttle"); Pero comencé a usar Vite , que no permite require , así que tengo que usar import en su lugar.
El código al que hago referencia quiere instanciar una class es decir:
this.throttle = new Throttle({ // set false to pause queue active: true, // how many requests can be sent every `ratePer` rate: 10000, // number of ms in which `rate` requests may be sent ratePer: 1000, // How many requests can be sent concurrently concurrent: 2 }); He probado diferentes variaciones de la declaración de import , pero ninguna de estas funciona para mí:
import { Throttle } from "superagent-throttle"; import Throttle from "superagent-throttle"; import * as Throttle from "superagent-throttle";Todos dan el mismo resultado: compilan bien pero fallan en tiempo de ejecución con el mismo mensaje de error (como el anterior).
El código en el archivo JS superagent-throttle parece bastante oscuro, no tengo idea de lo que está tratando de hacer, por lo que estoy luchando para tratar de entender cómo podría solucionar este problema:
Archivo del paquete: node_modules/superagent-throttle/dist/index.js :
'use strict'; var _events = require('events'); var _events2 = _interopRequireDefault(_events); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } ... class Throttle extends _events2.default { constructor(options) { super(); // instance properties this._options({ _requestTimes: [0], _current: 0, _buffer: [], _serials: {}, _timeout: false }); ... etc ...El mensaje de error apunta a _events2.default en el código infractor:
var _events = require('events'); var _events2 = _interopRequireDefault(_events); ⋮ 👇 /* not a constructor or null */ class Throttle extends _events2.default { El depurador revela que _events.default aparece como un objeto vacío, lo que significa que el módulo de events no está disponible. events (de Node ) normalmente no está disponible en el navegador, lo que lleva al error que observó.
Una solución es instalar un shim de events :
npm i -S events