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

300
Vistas
Error de referencia no detectado: variable indefinida

Estoy tratando de definir una clase en un archivo javascript separado y luego usar esa clase en mi archivo HTML.

Esto es lo que estoy intentando.

  1. Creo la clase VoiceCard en el archivo VoiceCard.js:
 class VoiceCard { constructor(nickname, date_time, post_title, voice_post) { this.nickname = nickname; this.date_time = date_time; this.post_title = post_title; this.voice_post = voice_post; }
  1. Creo un archivo HTML donde agrego el archivo como fuente:
 <!DOCTYPE html> <html lang="en"> <head> <title>Example</title> <meta charset="utf-8"> <script type="module" src="../VoiceCard.js"></script> </head>
  1. Creo un script donde llamo a la clase para crear una nueva variable de la clase VoiceCard y registro uno de los atributos en la consola:
 <!DOCTYPE html> <html lang="en"> <head> <title>Example</title> <meta charset="utf-8"> <script type="module" src="../VoiceCard.js"></script> </head> <body> <script type="text/javascript"> let v_card = new VoiceCard( "Lorder", "12:00", "First Voicer Post", "file_location.mp4"); console.log(v_card.nickname); </script> </body> </html>

El error es: Error de referencia no detectada: la tarjeta de voz no está definida.

Parece que no puedo encontrar la razón del error. Cualquier ayuda sería apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los módulos no crean globales. Esa es la mayor parte del punto de ellos. :-)

He aquí cómo hacer lo que parece que quieres hacer:

  1. Elimine la etiqueta de secuencia de script para VoiceCard.js .

  2. En VoiceCard.js , exporte la clase agregando export delante de class .

  3. Cambie su secuencia de comandos en línea a un módulo en línea que importa la clase del archivo VoiceCard.js .

Asi que:

 export class VoiceCard { // ^^^ constructor(nickname, date_time, post_title, voice_post) { this.nickname = nickname; this.date_time = date_time; this.post_title = post_title; this.voice_post = voice_post; } } // <== This closing `}` was missing
 <!DOCTYPE html> <html lang="en"> <head> <title>Example</title> <meta charset="utf-8"> <!-- No script tag for VoiceCard --> </head> <body> <script type="module"> import { VoiceCard } from "../VoiceCard.js"; // *** let v_card = new VoiceCard( "Lorder", "12:00", "First Voicer Post", "file_location.mp4" ); console.log(v_card.nickname); </script> </body> </html>

El navegador descargará VoiceCard.js automáticamente cuando vea la import .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede eliminar type="module" para solucionar este problema

 <!DOCTYPE html> <html lang="en"> <head> <title>Example</title> <meta charset="utf-8"> <script src="../VoiceCard.js"></script> </head> <body> <script type="text/javascript"> let v_card = new VoiceCard( "Lorder", "12:00", "First Voicer Post", "file_location.mp4"); console.log(v_card.nickname); </script> </body> </html>
about 4 years ago · Juan Pablo Isaza 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