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

232
Views
¿No puede acceder a ningún objeto o función desde la consola del navegador, pero todo funciona según lo previsto?

Estoy usando "clases" con un montón de miembros estáticos para mantener mi código muy profesional organizado. Al igual que:

índice.html

 <script type="module" src="client/js/main.js"></script>

principal.js

 import { UINav, UIDimension } from "./interface.js"; import { Dimension } from "./dimension.js"; import { InputFlex } from "./input.js"; function main() { Dimension.init(); UIDimension.init(); UINav.init(); InputFlex.start(); }

Mi pregunta: ¿Por qué obtengo, por ejemplo, Uncaught ReferenceError: InputFlex is not defined cuando quiero verificar cosas desde dentro de la consola del navegador, pero todos los métodos de las importaciones se ejecutan como se esperaba? ¿Cómo puedo encontrar mis queridas "clases" desde dentro del navegador?
También estoy usando TypeScript, pero dudo que eso importe.
Editar: los archivos se obtienen de un servidor localhost.

Editar: parece haber un problema general en mi entorno en el que ni siquiera puedo encontrar la función main() desde dentro de la consola del navegador. Estoy ejecutando un servidor deno. ¿Podría ser esta la raíz de mi divertido problema?
Puedo registrar cosas desde el interior de los archivos js pero no desde la consola del navegador donde me dicen que todo está indefinido, pero evidentemente esas entidades existen en alguna parte, porque todo funciona según lo previsto.

Editar: @iamimran input.js es literalmente solo esto:

 export class InputFlex { static myMember123 = {...}; static start() {...} (...) }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Los módulos tienen su propio alcance. Las variables declaradas dentro de ellos no son globales.

Esto es bueno: las variables globales generan conflictos y dificultan el mantenimiento y la depuración.

Si desea acceder a ellos desde la consola de herramientas del desarrollador, deberá mover la consola al alcance del módulo, por ejemplo, estableciendo un punto de interrupción allí.

about 4 years ago · Juan Pablo Isaza Report

0

Sus mensajes de import muestran que está trabajando con módulos ECMAScript .

Una de las principales motivaciones detrás del uso de módulos es no contaminar el espacio de nombres global, lo que significa que cualquier variable definida en sus módulos es privada para ese módulo, no global. Esto se llama encapsulación .

Si desea que algo en un módulo se convierta en una variable global, debe "publicarlo" explícitamente en el objeto global:

 import { UINav, UIDimension } from "./interface.js"; import { Dimension } from "./dimension.js"; import { InputFlex } from "./input.js"; // to "publish": Object.assign(globalThis, { UINav, UIDimension, Dimension, InputFlex }); // ...

Tenga en cuenta que esto es potencialmente peligroso porque la llamada anterior a Object.assign sobrescribiría efectivamente cualquier variable global potencialmente ya existente (una de las muchas razones por las que desea usar el espacio de nombres global lo menos posible, preferiblemente nada ).

Si su única intención es "probar" cosas en la consola, está bien temporalmente (!). Si lo está haciendo con fines de depuración, es mejor usar directamente el depurador de herramientas de desarrollo de su navegador.

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!