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

243
Visualizações
No capturado (en promesa) TypeError: no se pueden leer las propiedades de undefined (leyendo 'emailAddress')

Estoy analizando algunos correos electrónicos de un CSV en el método a continuación y obtengo No se pueden leer las propiedades de undefined (leyendo 'emailAddress'). Incluso intenté filtrar los resultados indefinidos, pero no tuve suerte. ¿Cómo puedo filtrar los que no están definidos?

 const getContactsFromText = (text) => { if(text == "" || text.trim() == '' || text === undefined){ settingTheAlert(); return; } const contacts = text.split(/[,;\n]/) .filter(x => x.length > 0) .map(x => x.trim()) .map(x => { const [, , displayName = '', emailAddress = ''] = x.match(/"?((.*?)"?\s*<)?([^">]*)/); if (!emailAddress && !displayName) return; if(emailAddress === undefined) return; return { id: emailAddress, emailAddress, displayName, isChecked: true }; }) .filter(x => isValidEmail(x.emailAddress)) .sort(sortByEmail); if(contacts.length < 1){ settingTheAlert(); return; } onImport(contacts); } const isValidEmail = (email) => { const EMAIL_RE = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; const isValid = EMAIL_RE.test(String(email).toLowerCase()); if (!isValid) console.log('invalidEmail', { email }) return isValid; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En tu código aquí:

 .map(x => { const [, , displayName = '', emailAddress = ''] = x.match(/"?((.*?)"?\s*<)?([^">]*)/); if (!emailAddress && !displayName) return; if (emailAddress === undefined) return; // this is useless (it's covered above) return { id: emailAddress, emailAddress, displayName, isChecked: true }; }; })

implícitamente no devuelves nada/indefinido en estas líneas:

 if (!emailAddress && !displayName) return; if (emailAddress === undefined) return; // again, this line is not needed

que es equivalente a devolver undefined . Luego, en el filter subsiguiente, asume que x.emailAddress existe, pero es posible que no, ya que justo arriba estaba devolviendo indefinido en algunos casos de esquina.

Para remediarlo usted:

  1. Tengo que cambiar la función de filter (probablemente la mejor solución)
  2. Haga que la función isValidEmail espere todo el objeto de correo electrónico en lugar de la cadena esperada (probablemente un poco menos deseable)

Si obtuviste el primer enfoque, debería verse algo como:

 // ... other code .map(x => { const [, , displayName = '', emailAddress = ''] = x.match(/"?((.*?)"?\s*<)?([^">]*)/) if (!emailAddress && !displayName) { return null } return { id: emailAddress, emailAddress, displayName, isChecked: true } }) .filter(emailObj => emailObj && isValidEmail(emailObj.emailAddress)) // checking first that the emailObj is not undefined and then checking if the emailObj.emailAddress is valid.

Deberia trabajar.

about 4 years ago · Juan Pablo Isaza 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