2017-02-04 70 views
16

У меня очень простое приложение, только начинающее замарать руки с помощью 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) 

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

ответ

27

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

node --version

Если вы не по крайней мере, 6+, то вы должны обновить.

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

+0

Пользователям Linux, вероятно, придется использовать команду 'nodejs -version', чтобы проверить их версию. – ThisClark

+0

Удивительно, в этом была проблема. Огромное спасибо!! –

+0

Чтобы обновить nodejs до v8.x: $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - $ sudo apt-get install -y nodejs – Pei

3

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

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

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

1

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

Таким образом выполните следующие действия для обновления узла:

1 * Судо НПМ кэш чистый -f

2 * sudo npm install -gn

3 * sudo n стабильный

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

т.е. если 8.1.1 установлен, то сделать Sudo пер -sf/USR/местные/п/версии/узел/8.1.1/бен/узел/USR/бен/узел

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

Nodemailer error when required