Búsqueda de sitios web

typescript - ReferenceError: No se puede encontrar la variable: TextEncoder


Estoy usando VSCode/Typescript React 3.4.3 para un proyecto de React Native y estoy teniendo problemas en tiempo de ejecución con TextEncoder

El código ts:

...
var encoder = new TextEncoder();
var b: Uint8Array = encoder.encode(newName);
...

Mis bibliotecas de tsconfig:

  "module": "es2015",
    "target": "es2015",
    "jsx": "react",
    "lib": ["es5", "es2017", "dom"]

Esto compila bien pero falla en tiempo de ejecución cuando intenta crear la instancia de TextEncoder:

"ReferenceError: No se puede encontrar la variable: TextEncoder"

No entiendo qué está mal aquí.

Cualquier ayuda es apreciada

EDIT 1: Bueno, el hecho es que cuando depuras tu código JS, se ejecuta en Chrome, lo que conduce al éxito. Pero cuando no lo haces, terminas descubriendo que JavaScriptCore tampoco soporta TextEncorder ni btoa.

Así que he decidido favorecer el uso de los módulos npm (text-encoding y base-64):

import * as encoding from 'text-encoding';
import {encode as btoa} from 'base-64'
...
var encoder = new encoding.TextEncoder();
...

Respuesta #1

Para aquellos que todavía tienen problemas en 2022 con esto, o con un proyecto de TypeScript, realicen los siguientes pasos:

  1. Ejecute: yarn add text-encoding
  2. Ejecute: yarn add big-integer
  3. Agrega el siguiente código a App.js o App.tsx:

const TextEncodingPolyfill = require('text-encoding');
const BigInt = require('big-integer')

Object.assign(global, {
    TextEncoder: TextEncodingPolyfill.TextEncoder,
    TextDecoder: TextEncodingPolyfill.TextDecoder,
    BigInt: BigInt,
});

Respuesta #2

Recibí el mismo error usando el socket de stomp.js.

Todo lo que hice fue poner

importar * como encoding desde 'text-encoding';

en App.js y funciona bien tanto en versión de lanzamiento como en depuración

Artículos relacionados