需要时出现 Nodemailer 错误

Nodemailer error when required

我的简历网站快完成了,我正在完成一个 "Contact me" 表格,该表格应该会向我发送一封包含纯文本的电子邮件。

这是它在 Jade 中的样子:

div.contact-email-box
    form(id='contact-form' action='/' method='post')
        h3 Contact me
        div
            label
                span Name:
                input(placeholder='e.g: Mark' type='text' tabindex='1' required autofocus)
        div
            label
                span Email:
                input(placeholder='e.g: mark@example.com' type='email' tabindex='2' required)
        div
            label
                span Message:
                textarea(tabindex='3' required)
        div
            button(name='Submit' type='submit' id='contact-submit') Send Email

这是我在 server.js 中找到 POST 的地方:

var express = require('express')
              , app = express()
var nodemailer = require('nodemailer')

app.post('/', function(req, res) {
})

如您所见,它没有执行任何操作,但我收到以下错误:

/home/kade_c/website/node_modules/nodemailer/lib/mailer/index.js:31 compile: [(...args) => this._convertDataImages(...args)], ^^^

SyntaxError: Unexpected token ...

只有当我 require('nodemailer') 时才会发生这种情况,即使它已正确安装到我的 node_modules

这是已知错误吗?我该如何解决?

在我看来像是节点版本问题。扩展运算符在早期版本的 Node 上无效,请检查以确保您是 运行 支持 ES6 功能的版本。

Node.js 版本 6+ 是必须的。使用以下命令检查您的节点版本:

节点--版本

如果您未满 6 岁,则必须升级。

您可能会收到另一条错误消息,指示您登录您的帐户。在这种情况下,请转到您的电子邮件收件箱,您会看到一条来自 Google 的消息,其中带有 link 到用于设置不太安全的应用程序权限的页面。

Nodemailer 兼容 Node 版本 6 或更高版本(根据 https://nodemailer.com/about/#requirements

所以请按照以下步骤升级节点:

1* sudo npm 缓存清理 -f

2* sudo npm install -g n

3* sudo n 稳定

4* sudo ln -sf /usr/local/n/versions/node/5.4.1/bin/node /usr/bin/node (粗体text/version 应该是在上述步骤中安装的那个。)

即如果安装了 8.1.1 则执行 sudo ln -sf /usr/local/n/versions/node/8.1.1/bin/node /usr/bin/node

node –v(现在应该显示更新版本)