2017-02-04 23 views
16

Tôi có một ứng dụng rất đơn giản, chỉ cần bắt đầu để có được bàn tay của tôi bẩn với nodemailer. Khi tôi chạy ứng dụng, tôi nhận được lỗi trong chính mô đun đó.Lỗi Nodemailer Không thể sửa

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); 
}); 

Và tôi nhận được lỗi này:

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) 

Thực sự không chắc chắn những gì đang happenning đây.

Trả lời

27

Yêu cầu phiên bản Node.js 6+. Kiểm tra phiên bản Node của bạn với lệnh sau:

node --version

Nếu bạn không có ít nhất 6 + sau đó bạn phải nâng cấp.

Bạn có thể nhận được một thông báo lỗi khác hướng dẫn bạn đăng nhập vào tài khoản của mình. Trong trường hợp đó, hãy truy cập hộp thư đến email của bạn và bạn sẽ thấy một thông báo từ Google có liên kết đến trang để thiết lập quyền ứng dụng kém an toàn hơn.

+0

Người dùng Linux có thể phải sử dụng lệnh 'nodejs --version' để kiểm tra phiên bản của họ. – ThisClark

+0

Tuyệt vời, đó là vấn đề. Cảm ơn nhiều!! –

+0

Để nâng cấp nodejs lên v8.x: $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - $ sudo apt-get install -y nodejs – Pei

3

Chỉ cần thêm mục này vào tệp package.json của bạn.

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

Điều này sẽ tự động tải xuống phiên bản nút mà bạn cung cấp. Bằng cách này, bạn không cần phải nâng cấp NodeJS của bạn mỗi lần trong máy chủ.

1

Nodemailer tương thích với Node phiên bản 6 trở lên (theo https://nodemailer.com/about/#requirements)

Vì vậy, làm theo các bước sau để nâng cấp nút:

1 * sudo NPM bộ nhớ cache sạch -f

2 * sudo npm cài đặt -gn

3 * sudo n ổn định

4 * sudo ln -sf/usr/local/n/phiên bản/nút/5.4.1/bin/node/usr/bin/node (văn bản in đậm/phiên bản phải được cài đặt trong bước trên .)

tức là nếu 8.1.1 được cài đặt sau đó làm sudo ln -sf/usr/local/n/phiên bản/node/8.1.1/bin/node/usr/bin/nút

nút –v (Nên hiển thị phiên bản cập nhật ngay bây giờ)

Đã trả lời ở đây là Nodemailer error when required

Các vấn đề liên quan