如何使用我自己的主机在nodejs中发送电子邮件?

我想发送电子邮件与节点js,但我的代码给出了一个错误。 Error: 140616526522240:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:794: at Error (native) code: 'ECONNECTION', command: 'CONN' } 而我的代码是: router.post('/api/emailsending', function(req, res){ var nodemailer = require('nodemailer'); var smtpConfig = { host: 'euk-84736.eukservers.com', port: 25, secure: true, // use SSL auth: { user: 'no_reply@xyz.in', pass: 'xyz123' } }; var transporter = nodemailer.createTransport(smtpConfig); // setup e-mail data with unicode symbols var mailOptions […]

NodeJS / gm:承诺asynchronous调用

我使用gm来操作nodeJS应用程序中的一些图像。 这是我的function如何。 正如你所看到的,有一些操作开关(在这个例子中:旋转)。 gmStream被创build,在切换之后.stream()和pipe()将被使用。 到目前为止,一切都很好。 但是,对于切换resize的情况下,我需要知道图像的尺寸,我通过size() 。 但是这是一个asynchronous调用。 这个gmStream不用于交换机下面显示的stream() 。 但是在这个stream()会做更多的数据库的东西,所以我需要使用相同的东西… function manipulate (method, param) { return new Promise(function (resolve, reject) { // Configure GridFS (gridfs-stream) const gfs = Grid( MongoInternals.defaultRemoteCollectionDriver().mongo.db, MongoInternals.NpmModule ) switch (method) { case 'rotate': gmStream = gm(readStream) .rotate('#ffffff', param.rotate) break // … some more cases … case 'resize': gmStream = gm(readStream) […]

使用AVA进行dynamictesting

我期待运行ava programmaticaly,所以我的脚本将能够运行一些dynamic参数(实际上是一个url)的avatesting。 我的目标是运行programmaticaly在dynamic(来自用户input)URL的列表上的相同的AVAtesting文件,然后,取回输出。 我知道ava api是一个很好的起点,但是我可以看到官方的gulp-ava不使用这个API,API的用法对我来说还不清楚。 所以,TL; DR: 我如何从我自己的nodejs脚本运行avatesting文件? 我怎样才能从我的脚本传递一个dynamic参数到avatesting文件? 我怎样才能找回来自AVA的输出? 谢谢, 汤姆

Webpack / Express – 服务器找不到的环境variables

在我的Express / React应用程序中,我使用Webpack来处理服务器端的渲染。 但是,我正在遇到与我试图在我的Express服务器脚本中访问的环境variables有关的构build错误。 在服务器脚本index.js ,我设置了一些variables,如下所示: const gitCommit = process.env.GIT_COMMIT || require("./gitignore/git_commit.js"), buildDate = process.env.BUILD_DATE || require("./gitignore/build_date.js") 而且由于我在本地机器上运行testing生产版本,我删除了gitignore/目录并设置了这些环境variables: $ export GIT_COMMIT="test commit hash" $ export BUILD_DATE="test build date" 然后我npm run build ,执行以下脚本: "build:client": "webpack –config webpack.config.js", "build:server": "webpack –config webpack.server.config.js", "build": "npm run build:client && npm run build:server" build:client执行没有问题,但build:server抛出错误… ERROR in ./index.js Module not found: […]

如何等待,直到多个EventEmitter实例在Node.js中发出相同的事件?

我正在研究一个Node.js模块/实用程序,这将允许我脚手架一些目录/文件。 长话短说,现在我有这样的主要function: util.scaffold("FileName") 这个“脚手架”方法返回一个EventEmitter实例,所以,当使用这个方法时,我可以做这样的事情: util.scaffold("Name") .on("done", paths => console.log(paths) 换句话说,当所有的文件被创build时,事件“完成”将被发射与脚手架文件的所有path。 一切都很好迄今。 现在,我正在试图用这个方法做一些testing和基准testing,我试图find一个方法来执行一些操作(断言,日志等),这个“脚手架”方法已被多次调用不同的“名称”的说法。 例如: const names = ["Name1", "Name2", "Name3"] const emitters = names.map(name => { return util.scaffold(name) }) 如果我正在返回Promise而不是EventEmitter,我知道我可以这样做: Promise.all(promises).then(()=> { //perform assertions, logs, etc }) 但是,我不知道如何使用EventEmitter来做同样的事情。 换句话说,我需要等到所有这些发射器发出这个相同的事件(即“完成”),然后再执行另一个操作。 任何想法/build议如何做到这一点? 提前致谢。

木偶:等一个元素是可见的?

我想用木偶工具知道js工具是否可以等一个元素显示出来 const inputValidate = await page.$('input[value=validate]'); await inputValidate.click() //I want to do something like that waitElemenentVisble('.btnNext ') const btnNext = await page.$('.btnNext'); await btnNext.click(); 你怎么做这种types的东西?

NodeJS入门 – 在nodeJS中找不到模块

我是NodeJS的新手,我试图在NodeJS中根据NodeJS站点上的指南创build一个服务器。 我已经安装了NodeJS到我的电脑,并使用以下代码制作app.js文件。 const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); 然后我尝试在cmd (Windows 10)中inputnode app.js命令来运行代码。 之后,它显示以下错误。 C:\Users\Nuwanst\Documents\NodeJS\test2>node appjs module.js:471 throw err; ^ Error: Cannot find module 'C:\Users\Nuwanst\Documents\NodeJS\test2\appjs' […]

承诺中的exception处理

有时候构造一个承诺可能会有一个例外的情况,如数据库拒绝连接或数据库的无效主机名参数,例如: 在db.js中 const mysql = require('mysql'); module.exports.connect = (options) => { return new Promise((resolve, reject) => { try { const connection = mysql.createConnection(getDBConfig()); connection.connect(); resolve(connection); } catch (err) { throw new Error('Error connecting database'); } }); }; function getDBConfig() { const isProd = process.env.NODE_ENV === 'production'; const config = { debug: !isProd, host: 'localhost', user: […]

上传mp3到NodeJS Express服务器损坏文件

我想从我的Web客户端上传一个MP3文件到Node Express服务器。 我可以上传文件,然后写入磁盘。 但是,文件被损坏,我不能用MP3播放器播放歌曲。 如果有所作为,文件将从OS X机器上传,然后写入Ubuntu服务器。 上传的file upload的大小比原来的大。 我在这个工作stream程中没有收到错误。 直到我开始播放文件,没有任何问题。 请参阅下面的代码。 任何想法,为什么我遇到这个? 客户 uploadSong: (song) => { fetch('http://localhost:8080/song', { method: 'PUT', headers: { 'Content-Type': 'audio/mpeg', }, body: song }) .then( response => { console.log("Got response after uploading song:", response); }) .catch( error => { console.log("Error in Firebase AC upload song: ", error); }); } 服务器 […]

无法从另一个文件夹访问我的.scss软件包文件

我想检索我的.scss文件,其中包含所有其他.scss文件(所有其他.scss文件都导入到styles.scss文件中)。 我把path放到我的angular度cli文件中,文件仍然不可访问(我的html元素没有应用样式) Angular CLI :从我在npm start上运行的文件夹(项目)(从我想访问的文件夹中添加“../webstyles/src/styles.scss”path) "apps": [ { "root": "src", "outDir": "dist", "assets": [ "assets", "favicon.ico", "app/cms/demo.json" ], "index": "index.html", "main": "main.ts", "polyfills": "polyfills.ts", "test": "test.ts", "tsconfig": "tsconfig.app.json", "testTsconfig": "tsconfig.spec.json", "prefix": "cb", "styles": [ "../webstyles/src/styles.scss" ], 我得到的错误是:找不到模块:错误:无法解决该项目中的path…。 对不起,我不能发布文件夹树,但我多次检查,不要以为我在这里犯了一个错误 我有什么select?