Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda