Tengo este módulo api desde el exterior. Cuando se instala como un node_module (con npm install), entonces funciona una importación como esta:
import MyAPI from 'api'Sin embargo, cuando miro en la carpeta api en node_modules y saco api.js, que es el punto de entrada del módulo, y realizo una importación relativa como esta:
import MyAPI from './api.js'Entonces me sale el error:
"The requested module ./api.js does not provide an export named 'default'"No tengo control sobre cómo se construye el módulo api. ¿Cómo puede funcionar en un caso pero no en otro? Este es el Nodo 12.
Ha confirmado que el package.json en la carpeta del módulo no tiene "type": "module" . Ese es el problema. Utiliza el antiguo sistema CommonJS en lugar del nuevo sistema ESM estándar que utiliza su módulo. Node.js realiza algunas conversiones automáticas al cargar módulos CommonJS de estilo antiguo a través de ESM ( detalles ).
Si desea copiar ese archivo fuera de su módulo y usarlo en un entorno de módulo diferente, deberá convertir sus exportaciones (y potencialmente importaciones) a ESM. Por ejemplo, en lugar de:
exports.example = function example() { };podría ser
export function example() { }pero es potencialmente complicado, porque los dos sistemas funcionan de manera diferente. CommonJS es dinámico, basado en la asignación de propiedades (aunque el resultado es estático), ESM es estático, declarativo (aunque el resultado es, en cierto modo, dinámico).