需要时出现 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(现在应该显示更新版本)
我的简历网站快完成了,我正在完成一个 "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(现在应该显示更新版本)