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] } } }
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:
Estapublicación SO ayuda a definir un par de diferencias entre el método ES6 y CommonJS.