试图使用nodemailer使用Gmail发送电子邮件,并收到错误:“无法为用户创build新的访问令牌”

我目前有一个设置,使用gmamail中的nodemailer发送邮件。 当我手动创build一个访问令牌(它只持续〜1小时)时,它工作正常。 但是,过了一小时后,我得到了下面的错误。 请注意,在那个小时内,我能够发送电子邮件就好,一切正常。 { Error: Can't create new access token for user at XOAuth2.generateToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:162:33) at XOAuth2.getToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:111:18) at SMTPConnection._handleXOauth2Token (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1421:27) at Immediate.setImmediate (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1239:45) at runCallback (timers.js:666:20) at tryOnImmediate (timers.js:639:5) at processImmediate [as _immediateCallback] (timers.js:611:5) code: 'EAUTH', command: 'AUTH XOAUTH2' } 我用来发送电子邮件的代码是: var emailMsg = `Name: ${name}\nEmail: ${email}\n\nMessage:\n${msg}`; var transporter = nodemailer.createTransport({ service: 'gmail', […]

如何连接到“主机:端口”,但没有使用浏览器,只是节点JS / Javascript?

为了与服务器(使用节点js创build)保持一致,我们打开浏览器并打开一些类似于以下代码的文件: <script src="http://127.0.0.1:8080/socket.io/socket.io.js"></script> <script type="text/javascript">/*<![CDATA[*/ var socket = io.connect('http://127.0.0.1:8080'); // Send messages to server: function envioas(){ socket.emit('operepues', 'envio'); } // Listen messages from server: socket.on('rdsdo', function(data){ document.getElementById('msj').innerHTML = data }); /*]]>*/</script> <div id="msj"></div> 但请,只需要从服务器的file.js创build这个连接! 我需要听服务器的消息,并发送消息到端口8080服务器从其他server.js端口666或任何其他… 我尝试着: …code JS… io = require('socket.io'); socket2 = 'http://127.0.0.1:8080'; var socket2 = io.connect(socket2); socket.emit('send_to_emit', typeof(socket2)); …code JS… 而且EVER'send_to_emit'是“未定义的”。 我需要连接从file_server01.js(服务器01中的文件JS / […]

如何从无服务器框架中的aws lambda调用mongodb函数?

我一直在观看像这样的无服务器框架上的video教程,并根据我收集的信息,似乎使用框架是pipe理aws lambda函数的最有效的方法之一。 在上面的video链接中,给出了一个使用lambda函数连接到DynamoDB表的示例,然后将其保存。 我需要做的是连接到一个MongoDB表,然后从中获取数据。 我只find了在无服务器上使用DynamoDB但在MongoDB中没有的例子。 我认为这个过程应该是相似的,但似乎并非如此。 我发现这个教程,但它不使用无服务器框架。 下面是在无服务器框架中从lambda连接并保存到Dynamo数据库表的示例: const uuidV1 = require('uuid/v1'); const AWS = require('aws-sdk'); const promisify = require('es6-promisify'); const _ = require('lodash'); const dynamo = new AWS.DynamoDB.DocumentClient(); module.exports.saveUserToDatabase = function(userId, coffeeType, coffeeSize) { console.log('saveUserToDatabase'); const item = {}; item.drink = coffeeType; item.size = coffeeSize; item.userId = userId; return saveItemToTable('coffee-user-table', item); }; 以下片段是用于使用名为lambda-local的npm包连接到MongoDB Atlas数据库的代码: […]

在Google Cloud App Engine中安装开发依赖关系

我正在尝试将我的React应用部署到Google Cloud App引擎。 我也添加了一个app.yaml文件。 它看起来像这样: // app.yaml runtime: nodejs env: flex 现在,我想在部署之前使用webpack构build我的项目。 所以下面的文档 ,我已经添加了prestart脚本到package.json 。 现在我的脚本部分package.json看起来像这样: "scripts": { "build": "npm-run-all –parallel webpack-client-build webpack-server-build", "webpack-server-build": "NODE_ENV='development' webpack –config ./webpack/webpack.server.config.js –progress –colors –watch", "webpack-client-build": "NODE_ENV='development' webpack –config ./webpack/webpack.browser.config.js –progress –colors –watch", "build-prod": "npm-run-all webpack-client-build-prod webpack-server-build-prod", "webpack-server-build-prod": "webpack –config ./webpack/webpack.server.config.js -p", "webpack-client-build-prod": "webpack –config ./webpack/webpack.browser.config.js -p", "prestart": "npm […]

无法在AWS EC2的公共IP上使用webpackdevserver托pipe反应应用程序

我正在运行AWS EC2上的react应用程序,它通过localhost:3000访问时在本地工作 我想让它公共访问,所以我通过公共ip到以下命令 var webpackDevServer = new WebpackDevServer(bundler, { publicPath: '/', hot: false, quiet: false, noInfo: true, stats: { colors: true } }); webpackDevServer.listen(3000, '18.230.124.435', function () { console.log('Bundling project, please wait…'); }); 我正在使用gulp来运行任务。 我geting一个错误错误:听EADDRNOTAVAIL 18.230.124.435:3000 我在这里做错了什么?

JSON到csv文件的中文字符编码

我已经写下了将json转换为csv的代码。 var json2csv = require('json2csv'); var fs = require('fs'); var fields = ['car.make', 'car.model', 'price', 'color']; var myCars = [ { "car": {"make": "萱萱的 iPad Mini", "model": "萱萱的 iPad Mini"}, "price": 40000, "color": "blue" }, { "car": {"make": "萱萱的 iPad Mini", "model": "萱萱的 iPad Mini"}, "price": 35000, "color": "black" }, { "car": {"make": "萱萱的 iPad […]

RxJS – 使用zip并行化使HTTP请求不工作的延迟Observable – 您提供了一个无效的对象,其中stream是预期的

我正在运行一个Node.js API端点,它必须在它的一个端点中对几个HTTP调用进行并列。 以星球大战API为例。 我通过id获取用户信息。 它包含一系列的电影,我想并行检索所有这些电影信息。 得到人的信息后,我创build了一个观察数组,每个人得到一个电影。 我build立了一个zip操作员来组成所有得到的电影的结果。 关键是,在订阅后,我看到n次,每个电影一个, console.log(filmData)信息,这是正确的。 但它似乎与console.log("*********************************************************************"); 不叫。 下一个,错误,完整的callback都不是。 为什么会这样? client.get("https://swapi.co/api/people/"+uid, args, (data, response) => { var filmsIt = data.films; for(var i in filmsIt){ var observable = Rx.Observable.defer(function () { client.get(filmsIt[i], args, (filmData, filmResponse) => { console.log(filmData); return filmData; }); }); observables.push(observable); } var observableFinal = Rx.Observable.zip(…observables, function() { console.log("*********************************************************************"); }).subscribe( function […]

Sendgrid事务邮件模板将href属性作为replace

我正在尝试使用sendgrid事务模板来发送信息电子邮件,如帐户validation等,使用sendgrid节点客户端 。 我创build了一个主要的事务模板,它应该有一个button,它具有一个dynamic的正文文本和一个带有每个邮件的dynamicURL / href属性的button。 我replacebutton文本的作品,如果我用URLreplacereplace它,我也看到在文本中的URL。 但是,当我尝试追加url到href属性它消失,它只是从我的锚标签剥离href属性。 这种情况在任何地方都会发生,无论是在可视化构build器中,HTML片段还是在邮件正文中设置buttonURL,都无关紧要。 手动设置一个URL,没有replace,似乎工作。 我也尝试使用%value%作为替代,和多个邮件客户端(Gmail,Outlook),但无济于事。请参阅我的函数发送以下信息电子邮件: const sendInformationalEmail = async (to, subject, body, substitutions) => { const fromMail = new helper.Email(SENDGRID_FROM_MAIL); const toMail = new helper.Email(to); const content = new helper.Content('text/html', body); const mail = new helper.Mail(fromMail, subject, toMail, content); mail.setTemplateId(process.env.SENDGRID_INFORMATIONAL_TEMPLATE_ID); Object.keys(substitutions).map(substitution => { mail.personalizations[0].addSubstitution( new helper.Substitution(`-${substitution}-`, substitutions[substitution]) ); }); const […]

如何在login成功后closureslogin标签?

我在用: MS Bot框架的Node SDK(版本3.7) AuthBot(使用OAuth2) 我已经编码它,所以生成的幻数自动保存,对话会话开始,只要用户通过MS帐户login。 我的问题是:一旦login成功,是否可以closures浏览器窗口的选项卡? 我已经尝试过在各个地方search,并尝试了windows.close()方法,但没有任何工作。 如果没有,是否可以拦截链接(即将在标签中打开)并打开一个本地HTML文件(使用代码: <script> window.close() </script> ),张贴login? 以下是生成JSON响应的代码片段: server.get('/api/OAuthCallback/', passport.authenticate('azuread-openidconnect', { failureRedirect: '/login' }), (req, res) => { console.log('OAuthCallback'); console.log(req); const address = JSON.parse(req.query.state); const magicCode = crypto.randomBytes(4).toString('hex'); const messageData = { magicCode: magicCode, accessToken: req.user.accessToken, refreshToken: req.user.refreshToken, userId: address.user.id, name: req.user.displayName, email: req.user.preferred_username }; magicNum = magicCode; var […]

通过使用body parser,node js的POST方法将一个variables从HTML表单传递到mongodb查询中

我从html表单发送数据,以在mongodb查找查询中使用它,但是当在查询中使用它时,它将searchvariables名称而不是其中的值存储。 app.post('/love',function(req, res){ var article = new Article(); article.headers.Subject = req.body.title; var x = "article.headers.Subject"; console.log(x); var query = Article.find({'header.Subject': {$regex: 'x'}}).limit(2); query.exec(function(err, articles){ if(err){ console.log(err); }else{ res.render('index.html',{ title: 'author', articles:articles }); } }); return; }) 尝试所有的查询选项,如: .find('headers.Subject' : /x/i) .find('headers.Subject': 'x') 我已经打印x和它的价值,但是当它发现查询它只是寻找字母“x”。 模型结构: var ArticleSchema = mongoose.Schema({ body: 'String', subFolder: 'String', headers:{ Subject: 'String', […]