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

288
Vistas
No se puede usar ES6 en la función AWS Lambda; cómo importar el módulo ES6 dentro de Lambda

Tengo una biblioteca foo que está escrita con ES6, import/export y en Typescript.

Tengo una bar de aplicaciones que usa foo . bar también está escrito con exportaciones y mecanografiado. Me gustaría que la bar se ejecute en AWS Lambda.

Por lo que puedo decir, no puedo usar import/export en Lambda (con el nodo de tiempo de ejecución 14.x) como

 export const handler = async () => {...};

Error, pero

 exports.handler = async () => {...};

No lo haré.

Así que dentro de mi tsconfig he configurado:

 "target": "ES5", (or ES6) "module": "CommonJS",

en las opciones del compilador.

Con esto, al ejecutar Lambda obtengo errores ya que ahora intenta require la biblioteca foo y dice que debe usar import .

¿Cómo puedo lograr mi objetivo final?

Tal como lo veo, hay 3 opciones, ninguna de las cuales sé mucho ya que todavía soy nuevo en los matices de JS.

  • Haga que la aplicación de mi bar transpile, o use el paquete web, o cualquiera que sea la herramienta para replicar la import en cjs.
  • Haga que mi biblioteca foo también incluya una distribución CJS (comencé a hacer esto y obtuve muchos errores de los aros que tuve que superar para que la biblioteca funcionara en es6).
  • Me falta algo en Lambda / Typescript que facilitará esto.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Se agregó compatibilidad con módulos ES en Node v14. Sin embargo, necesitamos ayudar un poco a Node a determinar qué tipo debe usar para cargar un archivo.

Si solo está utilizando módulos ES, es bastante fácil, simplemente puede agregar "type": "module" a su archivo package.json para indicarle a Node que use módulos ES. Otra forma es usar una extensión de archivo diferente. Sin embargo, dado que AWS Lambda necesita que el controlador se configure en forma de filename.methodname , siempre usará la extensión .js , lo que hace que no sea posible usar una extensión de archivo diferente para su punto de entrada.

He probado el "type": "module" en AWS Lambda, y parece funcionar. No he probado cómo funcionaría la interoperabilidad con dependencias que usan módulos CommonJS, pero asumo que esto funcionaría de inmediato.

Puede consultar este blog para obtener más información sobre cómo Node maneja esto.

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