Использование метода replace в функции Async / await выдает ошибку Nodejs - PullRequest
0 голосов
/ 15 февраля 2020

В настоящее время я использую метод replace в функции async / await и получаю журнал ошибок в своей консоли. Я делаю некоторую очистку от YellowPages, и я получил то, что хотел до сих пор, но при попытке очистить данные электронной почты, которые выглядят как строка 'mailto:johndoe@test.com', удалив "mailto:", я получаю следующую ошибку :

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'replace' of undefined
    at Node.<anonymous> (/Users/aeum3893/Documents/test_scrapping/yellowpages_scraping/index.js:20:40)
(node:25401) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 8)

А это фрагмент кода

const getCompanies = async () => {
    try {
        const html = await rp(baseURL + searchURL);
        const businessMap = cheerio('a.business-name', html).map(async (i, e) => {
            const link = baseURL + e.attribs.href;
            const innerHtml = await rp(link);

            const emailAddress = cheerio('a.email-business', innerHtml).prop('href')
            const email = emailAddress.replace(/mailto:/, '');


            const name = e.children[0].data || cheerio('h1', innerHtml).text();
            const phone = cheerio('p.phone', innerHtml).text();

            const metadata = {
                emailAddress,
                link,
                name,
                phone,
            }
            parsedResults.push(metadata)
        })

Как только я удаляю метод замены, все работает отлично.

Я ценю вашу помощь, спасибо!

1 Ответ

0 голосов
/ 15 февраля 2020

Я попытался с помощью logi c заменить и отформатировать строку электронной почты следующим образом, и это сработало.

При запуске замены logi c сразу после переменной emailAddress я был получение ожидаемых результатов, не неопределенных, а фактического результата, который я хотел, но при поиске компании, у которой не было электронной почты, обещание было отклонено. Я попытался запустить троичный оператор прямо под emailAddress, но ничего не получилось.

Я обнаружил, что решение состояло в том, чтобы запустить метод замены в реальном metadata объекте. Теперь все работает отлично.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...