• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

188
Views
¿Cómo trabajar con paquetes ESM solo npm y paquetes npm normales en un solo archivo JavaScript?

Ok, soy relativamente nuevo en el desarrollo web. Y estaba tratando de requerir dos paquetes, a saber, franc y langs en mi archivo index.js. Entonces resulta que franc ahora es solo un paquete ESM y tengo que importarlo y mencionar type:module en mi archivo package.json. Pero si hago eso, no puedo requerir el paquete langs. Y si trato de importarlo, aparentemente devuelve una promesa. Y también si trato de acceder a las funciones de langs, dice que no es una función. Por ejemplo

 import {franc} from 'franc' const langs = import('langs'); const langCode = franc('Alle menslike wesens word vry') console.log(langCode) console.log(langs.where("3", "kor"));

Dice langs.where no es una función. ¿Puede alguien ayudar, por favor?

Y aquí está la promesa devuelta si escribo este código

 import {franc} from 'franc' const langs = import('langs'); const langCode = franc('Alle menslike wesens word vry') console.log(langCode) setTimeout(function(data){ console.log(langs) }, 1000)

Producción

 afr Promise { [Module: null prototype] { default: { all: [Function: allLanguages], has: [Function: hasLanguage], codes: [Function: getCodes], names: [Function: getNames], where: [Function: findBy] } } }
almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Para importar correctamente la biblioteca, deberá realizar cualquiera de las siguientes acciones

 import {franc} from 'franc' import langs from 'langs' const langCode = franc('Alle menslike wesens word vry') console.log(langCode) console.log(langs.where("3", "kor"));
 import {franc} from 'franc' const langs = require('langs'); const langCode = franc('Alle menslike wesens word vry') console.log(langCode) console.log(langs.where("3", "kor"));
 import {franc} from 'franc' const langsModule = await import('langs'); let langs = langsModule.default; const langCode = franc('Alle menslike wesens word vry') console.log(langCode) console.log(langs.where("3", "kor"));

Personalmente recomendaría tomar la primera ruta, pero técnicamente las 3 deberían funcionar. Puede encontrar más información sobre la declaración de importación en los documentos web de MDN .

En cuanto a la diferencia entre las tres opciones:

  • La primera opción utiliza la funcionalidad del módulo ES6 para importar la exportación predeterminada del paquete langs.
  • La segunda opción utiliza el mismo método que la primera, pero utiliza específicamente la funcionalidad de importación dinámica de los módulos ES6. Esto requiere esperar a que se cargue el archivo y seleccionar la propiedad predeterminada, pero ofrece la opción de cargar archivos de forma asíncrona.
  • La tercera opción utiliza el método CommonJS para cargar dependencias. Con este método, solo puede importar la exportación predeterminada, lo que significa que se debe cargar todo el archivo, lo que restringe el rendimiento. Esto también debe hacerse sincrónicamente.

Estapublicación SO ayuda a definir un par de diferencias entre el método ES6 y CommonJS.

almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error