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

115
Views
¿Cuál es la diferencia entre importar "nombre" de "módulo" e importar * como "nombre" de "módulo"?

El código en mi aplicación es así.

 import { HttpExceptionFilter } from './common/exceptions/http-exception.filter'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe } from '@nestjs/common'; import { DocumentBuilder, OpenAPIObject, SwaggerModule } from '@nestjs/swagger'; //1. import * as expressBasicAuth from 'express-basic-auth'; //2. //import expressBasicAuth from 'express-basic-auth'; => promise unhandled error async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); app.use( ['/docs', '/docs-json'], expressBasicAuth({ challenge: true, users: { [process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD, }, }), ); };

Quiero saber la diferencia entre 1 y 2.

Porque cuando ejecuto mi aplicación usando 2 (9 líneas), hubo un error no controlado de promesa.

Quiero saber cómo funcionan esas dos formas. Me referí al documento oficial de mozilla, pero no pude entenderlo bien. Agradecería si pudieras responderme.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Primero, entendamos cómo funcionan las importaciones.

así que considere que tengo un archivo con las siguientes exportaciones

 // file name -> modules export const add = (x, y) => x + y; export const subtract = (x, y) => x - y; export default (x, y) => x * y;

ahora puedo importar todas estas funciones en otro archivo como este

 import defaultFunction, { add, subtract } from './modules.js'; console.log(add(1, 2)) // 3 console.log(subtract(2, 1)) // 1 console.log(defaultFunction(2, 2)) // 2 * 2 = 4

o puedo usar import * as <name> from <file/package> para importar todas las exportaciones dentro de un archivo.

como esto

 import * as myModules from './modules.js'; // NOTE: this will only give you add and subtract functions but not the default one // now to actually access the default function you have to use // import * as <name> from <file/package> // <name>.default to access the default export // or simply // import default, { } from <file/package> console.log(myModules.add(1, 2)) // 3 console.log(myModules.subtract(2, 1)) // 1 console.log(myModules.default(2, 2)) // 2 * 2 = 4 // or i can destructure the "myModules" import const { add, subtract } = myModules;

Conclusión

Creo que el problema es que la biblioteca que está utilizando no proporciona una exportación predeterminada para usar import expressBasicAuth from 'express-basic-auth'; o podría estar exportando diferentes funciones para exportaciones con named exports y default exports

about 4 years ago · Juan Pablo Isaza Report

0

Según su código:

  1. import * as expressBasicAuth from ...

    Importa todo export const variable1...; export const variable2...; elementos como un solo elemento.

  2. import expressBasicAuth from ...

    Importa un solo elemento export default si había uno definido dentro de la biblioteca.

Dependiendo de la implementación de la biblioteca, puede haber funciones totalmente diferentes exportadas de esas dos formas.

about 4 years ago · Juan Pablo Isaza Report

0

La mayoría de las veces, el módulo exporta varias cosas. Hay dos excelentes formas de importar desde otro módulo cuando el módulo exporta un objeto con propiedades. Este es el caso común.

Importe todo el módulo, dándole un nombre:

 import * as child_process from "child_process"; // then later... child_process.spawn(...); or pick the names you want to import: import { spawn } from "child_process"; // then later spawn(...);

a veces el módulo exporta solo una cosa. mecanografiado tiene el concepto de exportación predeterminada Si un módulo declara una exportación predeterminada, debe traerla de esta manera:

 import thing from "thing";

Ahora tiene una función o una clase (cualquiera que sea su exportación predeterminada) en la cosa.

Más comúnmente en los módulos de JavaScript (¿CommonJS?), el autor de un módulo anulará module.exports a una función o clase en lugar de agregar propiedades al objeto de exportaciones como lo haría un módulo ES.

entonces en común js tenemos

 const expressBasicAuth = require(express-basic-auth);

y en mecanografiado:

 import * as expressBasicAuth from 'express-basic-auth';
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!