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

479
Views
¿Cómo requerir y usar una clase ES6 en una aplicación next.js?

Estoy trabajando en una aplicación next.js y me gustaría mover el código que interactúa con la base de datos fuera de la API. Creé una clase que sería mi administrador:

 class UserManager { async findUser(email) { //some code return user; } async updateUser(user, reqBody) { //some other code //return something } } module.exports = UserManager;

y estoy tratando de usar esta clase desde mi api

 const UserManager = require('../../manager/UserManager'); export default async (req, res) => { const email = session.user.email; let UserManager = new UserManager(); const user = await UserManager.findUser(email); }

y estoy recibiendo este error

 | ReferenceError: Cannot access 'UserManager1' before initialization | 10 | } | 11 | const email = session.user.email; | > 12 | let UserManager = new UserManager(); | | ^

¿Qué tiene de malo este enfoque? ¿Estoy solicitando la clase de manera incorrecta?

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Esto no tiene nada que ver con módulos o requre . Solo variables y alcance.

Tiene dos variables llamadas UserManager .

Uno es una const y está en el ámbito del módulo y contiene la clase.

El otro es un let que tiene como alcance la función de flecha exportada; sombrea la const .

Está tratando de leer la const dentro de la función pero está sombreada por let . Dado que está tratando de leer la const primero (para llamar a una función para obtener el valor para asignar a let ), obtiene un error porque las reglas de JS dicen que está leyendo let (no la const que desea).

Cambia el nombre de la variable que usas para let .

Idiomatic JS reserva nombres de variables que comienzan con una letra mayúscula para clases y funciones de constructor (y React.js agrega componentes a esa lista). A la variable let se le asigna una instancia de una clase, no la clase en sí, por lo que su nombre no debe comenzar con una letra mayúscula.

 let userManager = new UserManager();

Recomiendo usar la regla no-shadow eslint para alertarlo cuando cometa este error.


Aparte: su clase no parece rastrear ningún estado interno, solo se usa para crear un objeto para agrupar algunos métodos (ninguno de los cuales hace uso de this ). Probablemente sería mejor como un objeto simple en lugar de una clase.

about 4 years ago · Santiago Gelvez 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!