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

637
Vistas
¿Diferencia entre importar X e importar * como X en node.js (ES6/Babel)?

Tengo una biblioteca lib de node.js escrita en ES6 (compilada con Babel ) en la que exporto los siguientes submódulos:

 "use strict"; import * as _config from './config'; import * as _db from './db'; import * as _storage from './storage'; export var config = _config; export var db = _db; export var storage = _storage;

Si de mi proyecto principal incluyo la librería así

 import * as lib from 'lib'; console.log(lib);

Puedo ver el resultado adecuado y funciona como se esperaba { config: ... } . Sin embargo, si intento incluir la biblioteca de esta manera:

 import lib from 'lib'; console.log(lib);

será undefined .

¿Alguien puede explicar qué está pasando aquí? ¿No se supone que los dos métodos de importación son equivalentes? Si no, ¿qué diferencia me estoy perdiendo?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

import * as lib from 'lib';

está solicitando un objeto con todas las exportaciones nombradas de 'lib'.


 export var config = _config; export var db = _db; export var storage = _storage;

se denominan exportaciones, razón por la cual terminas con un objeto como lo hiciste.


 import lib from 'lib';

está solicitando la exportación default de lib .


p.ej

 export default 4;

haría lib === 4 . No obtiene las exportaciones nombradas. Para obtener un objeto de la exportación predeterminada, tendría que hacer explícitamente

 export default { config: _config, db: _db, storage: _storage };
over 4 years ago · Santiago Trujillo Denunciar

0

Simplemente agregando a la solución de Logan porque entender la importación con corchetes, * y sin resolver un problema para mí.

 import * as lib from 'lib';

es el equivalente de:

 import {config, db, storage} as lib from 'lib';

Donde * es similar a un comodín que importa todas las export var de lib.

 export var config; export var db; export var storage;

Alternativamente, usando:

 import lib from 'lib';

Le permite acceder solo a la exportación predeterminada:

 // lib.js export default storage;

El uso de {} también solo importa componentes específicos del módulo, lo que reduce el espacio ocupado con paquetes como Webpack.

Mientras:

 import storage, { config, db } from './lib'

importaría todos los módulos, incluido export default storage;

Vea la respuesta de Dan Abramov: ¿Cuándo debo usar llaves para importar ES6?

over 4 years ago · Santiago Trujillo Denunciar

0

import X from Y; es un azúcar de sintaxis.

import lib from 'lib';

es igual a

import { default as lib } from 'lib';

over 4 years ago · Santiago Trujillo 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