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