Ошибка Nodemailer не может быть исправлена

У меня очень простое приложение, просто начинающее грязно ласкать с помощью nodemailer. Когда я запускаю приложение, я получаю ошибки в самом модуле.

app.js:

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport('smtps://me%40gmail.com:[email protected]');


var mailOptions = {
    from:    '"Me" <[email protected]>', // sender address
    to:      '[email protected], [email protected]', // list of receivers
    subject: 'Hello dude', // Subject line
    text:    'Test email with text', // plaintext body
    html:    "Testing 1..2..7" // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function (error, info) {
    if (error) {
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});

И я получаю эту ошибку:

C:\Users\Andrew\desktop\messy4\node_modules\nodemailer\lib\mailer\index.js:31
            compile: [(...args) => this._convertDataImages(...args)],
                       ^^^

SyntaxError: Unexpected token ...
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (C:\Users\Andrew\desktop\messy4\node_modules\nodemailer\lib\nodemailer.js:3:16)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

На самом деле не уверен, что происходит здесь.

Ответ 1

Node.js версия 6+ требуется. Проверьте версию Node с помощью следующей команды:

node --version

Если вам не меньше 6+, вам необходимо обновить.

Вы можете получить другое сообщение об ошибке, в котором вам будет предложено войти в свою учетную запись. В этом случае перейдите в свой почтовый ящик и вы увидите сообщение от Google со ссылкой на страницу для настройки менее безопасных разрешений для приложений.

Ответ 2

Просто добавьте это в свой файл package.json.

"engines": {
    "node": "6.9.4"    // You can use any version
  }

Это автоматически загрузит версию node, которую вы предоставляете. Таким образом, вам не нужно обновлять NodeJS каждый раз на сервере.

Ответ 3

Nodemailer совместим с Node версией 6 или выше (согласно https://nodemailer.com/about/#requirements)

Итак, выполните следующие шаги для обновления node:

1 * sudo npm cache clean -f

2 * sudo npm install -g n

3 * sudo n stable

4 * sudo ln -sf/usr/local/n/versions/ node/ 5.4.1/bin/node/usr/bin/node ( жирным шрифтом/версией должен быть тот, который установлен во время вышеописанного шага.)

т.е. если установлено 8.1.1, то выполните sudo ln -sf/usr/local/n/versions/ node/ 8.1.1/bin/node/usr/bin/node

node -v (должен показать обновленную версию сейчас)

Здесь также ответила Ошибка Nodemailer