Небольшая проблема с NodeJS

  • Автор темы Автор темы Dmitron
  • Дата начала Дата начала

Dmitron

A-Parser Enterprise License
A-Parser Enterprise
Не могу понять почему парсер отдает ошибку connection.app is not a function
Я же прямо указал константу в виде connection

Код:
    try {
        const connection = imaps.connect(config)
        connection.app(message.toString(), {mailbox: 'Draft'})
        connection.end()
    } catch(e) {
        results.status = e.message;
    }

Что я могу делать не так?
 
Скорей всего, connection - это метод какого-то модуля, возможно модуль не установлен, возможно неправильно подключен

Надо на весь код смотреть
 
Скорей всего, connection - это метод какого-то модуля, возможно модуль не установлен, возможно неправильно подключен

Надо на весь код смотреть

Код:
const imaps = require('imap-simple');

class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.40',
            results: {
                flat: [
                    ['name', 'name'],
                ]
            },
            results_format: '$status\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }

    *parse(set, results) {
       
        this.logger.put("Starting...");
       
        const config = {
            imap: {
            user: "[email protected]",
            password: "password",
            host: "imap.mail.ru",
            port: 993,
            tls: true,
            authTimeout: 30000,
            tlsOptions: { rejectUnauthorized: false },
                keepalive: false
            }
        };
       
        const message = `Content-Type: text/html; charset=UTF-8
Mime-Version: 1.0
To: <[email protected]>
From: "Test" <[email protected]>
Subject: test subject

test body
`;
const connection = imaps.connect(config)

    try {
        connection.append(message.toString(), {mailbox: 'Inbox'})
        connection.end()
    } catch(e) {
        results.status = e.message;
    }
       
 
        results.success = 1;

        return results;
    }
}
 
Надо проверять правильность конфига и есть ли у mail.ru поддержка imap сервера и т.д
у меня, с Вашими настройками вот такая ошибка

psv67_201108140727.png
 
Надо проверять правильность конфига и есть ли у mail.ru поддержка imap сервера и т.д
у меня, с Вашими настройками вот такая ошибка

psv67_201108140727.png
Конечно есть поддержка imap ))
Ну так вставьте валидную почту mail.ru и всё будет отображаться без вашей ошибки.
 
yybny_201108141635.png

вот с почтой и паролем которые Yandex::register регистрирует
можете написать в чат с саппортом, проверю на Вашей валидной почте

это проблема не с а-парсером, а с настройками модуля imap-simple-with-socks
т.к в начале передается конфиг, а потом возвращается connection
при ошибке в config, метод модуля не доступный
 
Код:
const imaps = require('imap-simple');
let connection;
class Parser {
    constructor() {
        this.defaultConf = {
            version: '0.1.45',
            results: {
                flat: [
                    ['name', 'name'],
                ]
            },
            results_format: '$status\\n',
            parsecodes: {
                200: 1,
            },
            max_size: 200 * 1024,
        };
    }
    async init() {
        const config = {
            imap: {
                user: "",
                password: "",
                host: "imap.mail.ru",
                port: 993,
                tls: true,
                authTimeout: 30000,
                tlsOptions: { rejectUnauthorized: false },
                keepalive: false
            }
        };

        connection = await imaps.connect(config);

    }

    async destroy() {
        if (connection)
            await connection.end()
    }

    async  *parse(set, results) {

        this.logger.put("Starting...");


        const message = `Content-Type: text/html; charset=UTF-8
        Mime-Version: 1.0
        To: <[email protected]>
        From: "Test" <[email protected]>
        Subject: test subject

        test body
        `;
        try {

            await connection.append(message.toString(), { mailbox: 'Inbox' })
            results.success = 1;

        } catch (e) {
          
            this.logger.put(e.message)
            results.success = 0;

        }

        return results;
    }
}

Добавил код для примера
т.к connection возвращает promise, для удобства работы с ним, лучше использовать async/await
+ инициализацию connect лучше делать в методе init() т.к он выполняется при старте задания

в методе destroy() можно закрыть соединение, он выполняется по завершению задания - этот метод доступен с версии 1.2.890
 
Последнее редактирование:
Спасибо.
Но почему ошибка не выводится в логе, а всплывает в апарсере?
 

Вложения

  • cda969b285.jpg
    cda969b285.jpg
    175,3 КБ · Просмотры: 4
Спасибо.
Но почему ошибка не выводится в логе, а всплывает в апарсере?

потому что она всплывает в методе init() на старте задания, а дальше задание не запускается
 
Последнее редактирование:
потому что она всплывает в методе init() на старте задания, а дальше задание не стартует
Мне нужно отлавливать ошибку при соединении, иначе все труды напрасны.
Без try catch я и так знаю как сделать.
 
Назад
Верх