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

310
Visualizações
node.js: function.prototype.method exportaciones múltiples dentro de un archivo

Noob en JS aquí.

Digamos que tengo un archivo js donde los contenidos son como

 function a(){} a.prototype.method1 = function() { ... }; a.prototype.method2 = function() { ... }; function b(){} b.prototype.method3 = function() { ... }; b.prototype.method4 = function() { ... }; module.exports = new a(); module.exports = new b();

En este archivo, tengo una definición de función. En el siguiente archivo, intento acceder a los métodos a continuación.

 var x = require('./file.js'); xamethod1(); //Not working x.method1(); //Not working

Pero ambos tipos de acceso dan como resultado un error para mí. ¿Me pueden ayudar con los pasos para acceder a los métodos correctamente?

Y puedo acceder a esas funciones si trato de tener solo 1 exportación en un archivo. Pero quiero que sea así. 2 exportaciones en un mismo archivo.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

El problema es que está reemplazando la propiedad de exports dos veces:

 module.exports = new a(); module.exports = new b();

Como resultado, solo está exportando una cosa: una instancia de b , que no tiene ningún method1 .

En su lugar, escriba en las propiedades del objeto de exports :

 module.exports.a = new a(); module.exports.b = new b();

Luego:

 const x = require('./file.js'); xamethod1(); // ...

o más típicamente, con desestructuración para que no necesite x :

 const {a, b} = require('./file.js'); a.method1(); // ...

Dicho todo esto: esa sintaxis es el antiguo sistema de módulos CommonJS . Le sugiero que aprenda la sintaxis estándar más nueva, " ESM " (Módulos de script E CMA), agregada a la especificación de JavaScript en ES2015 :

 function A() { } A.prototype.method1 = function() { /* ... */ }; A.prototype.method2 = function() { /* ... */ }; function B(){} B.prototype.method3 = function() { /* ... */ }; B.prototype.method4 = function() { /* ... */ }; export const a = new A(); export const b = new B();

También tenga en cuenta que hice que las funciones del constructor comiencen con una letra mayúscula, que es la convención estándar en JavaScript.

La importación sería:

 import { a, b } from "./file.js"; a.method1(); // ...

Para hacer eso, agregue "type": :"module" a su package.json (o use la extensión de archivo .mjs , consulte los documentos vinculados para obtener más detalles). Sin embargo, tenga en cuenta que una gran cantidad de paquetes npm aún no se han actualizado para admitir ESM (sobre todo porque la compatibilidad con ambos tomó un tiempo para concretarse y es un poco molesto), por lo que en algunos casos tiene que saltar a través de algunos ( menor) aros para usarlos; más aquí

(También puede consultar la sintaxis de la class , que proporciona una forma más concisa y eficaz de escribir funciones constructoras y sus objetos .prototype asociados).

over 4 years ago · Santiago Trujillo Relatório

0

module.exports = { a, b }

Llámalo desde otro archivo:

 const {a, b} = require("./file.js");
over 4 years ago · Santiago Trujillo 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