Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

294
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!