Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

490
Vistas
TypeScript con Node.js ESM desacuerdo

Node.js ESM parece funcionar de manera diferente a TypeScript.

Está dando como resultado programas que pasan la verificación de tipo y, sin embargo, fallan en tiempo de ejecución.

paquete.json

 { "dependencies": { "@types/lodash": "^4.0.0", "lodash": "^4.0.0", "typescript": "^4.0.0" }, "type": "module" }

tsconfig.json

 { "compilerOptions": { "module": "es2015" } }

a.ts

 import { partition } from "lodash"; partition([1, 2, 3, 4], n => n % 2);

Correr

 npm install node_modules/.bin/tsc -p . node index.js

Y el programa falla:

 file:///home/paul/test44/index.js:1 import { partition } from "lodash"; ^^^^^^^^^ SyntaxError: Named export 'partition' not found. The requested module 'lodash' is a CommonJS module, which may not support all module.exports as named exports. CommonJS modules can always be imported via the default export, for example using: import pkg from 'lodash'; const { partition } = pkg; at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21) at async ModuleJob.run (node:internal/modules/esm/module_job:179:5) at async Loader.import (node:internal/modules/esm/loader:178:24) at async Object.loadESM (node:internal/process/esm_loader:68:5) at async handleMainPromise (node:internal/modules/run_main:63:12)

¿Cómo puedo alinear TypeScript y Node.js ESM para que la verificación de tipos coincida con el comportamiento del tiempo de ejecución?


EDITAR:

He intentado usar typescript@next con "module": "nodenext" .

Ocurre el mismo error.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es que estás mezclando módulos ES y ComonJS; está en el texto del mensaje de error. Este es todavía un concepto relativamente nuevo y es fácil pasarlo por alto cuando esperarías que los módulos... deberían... simplemente funcionar.

TypeScript solo proporciona declaraciones de import , que luego transpilarán al sistema de módulos elegido; en el caso de ESM, no hay mucho que transpilar ya que son sintácticamente similares.

Dado que está transpilando a ESM, el problema no es TypeScript; es el motor subyacente de Node.js y cómo trata los sistemas de módulos mixtos. Ha escrito algo en ESM (concedido, usando TypeScript) y está tratando de importar algo más escrito en CommonJS.

Para ejecutar su código en función de un módulo CommonJS, debe:

  1. Utilice la versión ESM de su dependencia (¡y no todas las dependencias proporcionan una!)
  2. Use module.createRequire() para importar el módulo CommonJS en una forma utilizable

Fuentes:

https://nodejs.org/api/esm.html#no-require-exports-or-moduleexports https://nodejs.org/api/module.html#modulecreaterequirefilename

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda