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

397
Vistas
TypeError: no se pueden leer las propiedades de undefined (leyendo 'id')

Tengo este error en mi terminal:

TypeError: no se pueden leer las propiedades de undefined (leyendo 'id')

Estoy intentando probar la llamada a una API, pero aparece el error.

Mi función:

 itemToForm = () => { this.api.send(this.component, 'get', { lang: 'ES', filter: { id: this.item['id'] } } ).then(resEsp => { this.item = resEsp['data'][0]; this.api.send(this.component, 'get', { lang: 'EN', filter: { id: this.item['id'] } } ).then(res => { let itemEng = res['data'][0]; let fields = this.formDef.map(register => register.filter( field => field['register_table'].indexOf('traduction') !== -1 ).map( field => field['field_name']) ).filter(register => register.length); fields = fields.length ? fields[0] : []; if (itemEng) { this.item = Object.keys(itemEng).reduce((obj, key) => { obj[key] = this.item[key]; if (fields.indexOf(key) !== -1) { obj[key + '_eng'] = itemEng[key]; } return obj; }, {}); } if (this.item) { this.setForm(); } }) }) }

Mi archivo de especificaciones:

 it('should call api.send', () => { let spy1 = spyOn(api, 'send'); let item = { id: 1, name: 'test', } component.addItem(item); component.itemToForm(); expect(spy1).toHaveBeenCalled(); });
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Me encontré con esta pregunta, pero mi problema era en realidad algo completamente diferente.

En mi código por algunas razones tuve

 import { SOME_OBJECT } from '.';

que en su lugar debería ser así:

 import { SOME_OBJECT } from './proper-file';
over 4 years ago · Santiago Trujillo Denunciar

0

Qué está pasando:

Se llama a la función itemToForm() antes de que this.item esté listo.

Hay muchas estrategias para evitar este error. Una muy simple es agregar un receptor al comienzo de la función, así:

 itemToForm = () => { if(this.item === undefined) {return} // The rest of the code }

Esto detiene la función, si los datos aún no existen.

Una solución más elegante puede ser ir más arriba en su orden de operaciones y encontrar quién está llamando a itemToForm() y asegurarse de que los datos existan antes de llamar.

over 4 years ago · Santiago Trujillo Denunciar

0

En caso de que sea útil para que alguien lo sepa, recibí el error Cannot read properties of undefined (reading 'spec') al intentar instalar un módulo npm local con npm install [path to module here] . El origen del problema: no le había dado un nombre al módulo local en su package.json .

over 4 years ago · Santiago Trujillo 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