Tag: javascript

访问节点ReadStream

我有一个包裹在承诺中的代码片段。 这段代码从http读取图像,做各种事情,最后把它发送到aws.s3.putObject。 看起来像这样(简化):请注意forms是多方对象。 form.on('part', (part) => {//form is multiparty fileCount++; let tmpFile = path.join(os.tmpDir(), `${userId}_${timePrefix}_${path.basename(part.filename)}`); part.pipe(fs.createWriteStream(tmpFile)); part.on('end', () => { resolve(fs.createReadStream(tmpFile)); }); part.once('error', (error) => { handleError(error); }); }); form.once('error', (error) => { handleError(error); }); form.parse(request); }).then((imageStream) => { //here is a call to AWS S3.putObject. Which return a promise }).then(() => { return new […]

React + Express + Nodemailer:无法将组件和Nodemailer渲染在一起

我想使用客户端路由来呈现我的React应用程序,并且想要使用Nodemailer发送邮件。 由于Nodemailer不能在客户端使用,我必须在Express服务器上实现此function。 这就是服务器的样子: express.js router.use(express.static(path.resolve(__dirname, '..', 'build'))) router.get('*', (req, res) => { res.sendFile(path.resolve(__dirname, '..', 'build/index.html')) }) router.get('/sendmail', (req, res) => { transporter.sendMail(options, (error, info) => { if (error){ console.log(error) } console.log('Message was send!') }) }) 1)所以这呈现了React组件,但是当我路由到'/ sendmail'时显示一个空白页面,index.html被渲染为没有js,并且没有邮件被发送。 2)如果我删除第一行router.use(express.static…并路由到'/ sendmail'邮件被发送,但我的应用程序不会呈现。 另外我已经尝试了以下内容: router.use(express.static(path.resolve(__dirname, '..', 'build'))) router.get('*', (req, res) => { console.log('path', req.path) if (req.path === '/sendmail') { […]

将图像保存为base64,并使用path返回

我有点新的使用NodeJS,这是我第一次创build一个API,我上传一个angular度和ngfile upload到服务器的图像,这个想法是,API接收一个文件,编码它到base64,然后给我的对象与图像的path,然后显示在客户端。 config.js 'use strict' const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const multer = require('multer'); const fs = require('fs-extra'); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); res.header("Access-Control-Allow-Methods", "GET,HEAD,POST,PUT,DELETE"); next(); }); app.use('/uploads', express.static("./uploads")); app.use(bodyParser.json()); var storage = multer.diskStorage({ //multers disk […]

我不能从Node控件和mongodb中使用get方法从html控件中获取数据

代码中的问题 var userID = req.userid; var pwd = req.pwd; console.log("userid = " + userID + "pass = " + pwd); 控制台显示的值未定义,而不是input数据 控制台显示的值未定义,而不是input数据 我想从一个html文件中获取数据,并使用get方法插入到mongo数据库中。 但我无法从文本框中获取数据。 在nodejs(index.js)中的代码 const express = require('express'); const path = require('path'); const bodyparser = require("body-parser"); const mongoose = require('mongoose'); const app = express(); app.use(bodyparser()); app.use(bodyparser.urlencoded({ extended: false })); app.use(bodyparser.json()); app.set('port', (process.env.PORT || 1000)); […]

Node.js:如何在不获取UnhandledPromiseRejectionWarning的情况下返回被拒绝的承诺

我有一个使用request-promise-native模块查询couchdb数据库的模块中的函数: userByEmail: (email) => { const options = { url: `${config.couchdb.url}/medlog/_design/user/_view/by_email_or_userid?key="${email}"`, json: true, }; return rp.get(options) .then(users => users.rows.map(row => row.value)) .catch(reason => Promise.reject(new Error('test'))); } 第二个模块包含一个使用第一个模块的函数: router.get('/checkEmailExistence', (req, res) => { couchdb.userByEmail(req.param('email')) .then((userArray) => { res.status(200).end(userArray.length > 0); // returns 'true' if at least one user found }) .catch((e) => { winston.log('error', e.message); res.status(500).end(e.message); […]

我的回拨有什么问题?

这是具有2个函数的文件“path-info.js”:pathInfo&callback。 Pathinfo从对象“info”中收集有关文件的所有信息,callback获取该对象并将其返回。 码: "use strict"; const fs = require("fs"); let getInfo = function (err, someObject) { if (err) throw err; return someObject; }; function pathInfo(path, callback) { let info = {}; info.path = path; // write path info fs.stat(path, (err, type) => { // write type info if (type.isFile()) { info.type = "file"; } if […]

无法使用邮递员从express.js服务器得到回应

当我从邮递员请求数据时,请求数据显示服务器,但服务器的响应,即状态码和JSON对象没有发送到邮递员,邮递员正在加载…一段时间后,它说无法从服务器得到响应。 这里是我的server.js类 var bodyParser = require('body-parser'); var express = require('express'); var {mongoose} = require('./db/mongoose'); var {Todo} = require('./models/todo'); var {Users} = require('./models/Users'); var app = express(); app.use(bodyParser.json()); app.post('/todos', (req, res) =>{ var todo = new Todo({ text: req.body.text }); todo.save().then((doc) => { res.send(doc); }, (e) => { res.status(400).send(e); }); }); app.listen(3000, () =>{ console.log('started at […]

节点国际化不能在Jade视图内工作(节点i18n)

我一直在使用国际化的i18n节点模块。 在根我初始化模块如下: i18n.configure({ locales: ['en', 'nl'], register: global, directory: path.join(__dirname, 'locales'), defaultLocale: 'en', objectNotation: true }); app.use(i18n.init); 该模块已经将翻译function( __() )注册为全局。 但是,这个函数不起作用,所以我决定把它传递给我的控制器和视图中的方法。 app.use((req, res, next) => { res.locals.user = req.session.user || null; res.locals.formatDate = (data) => data ? format(data, process.env.DATE_FORMAT) : null; res.locals.__ = res.__ = () => i18n.__.apply(req, arguments); req.setLocale('en') next(); }); 它在控制器中工作正常。 我使用req.__('string-to-translate')并根据需要进行翻译。 但是,当我尝试使用与帕格/翡翠呈现的视图中完全相同的function时,它返回给我undefined […]

节点产生进程和存储输出

我的脚本的这一部分正试图产生一个克隆硬盘驱动器的孩子。 它基本上工作,但我遇到的问题是,当我遇到一个错误,并希望存储输出,它只存储输出的第一行,排除我实际需要的东西。 我已经在脚本之外运行了这个命令,它给了我两行输出,如果失败,第二行是错误。 那么,我怎么能存储整个输出。 非常感谢帮助,谢谢! NtfsPartition.prototype.WriteFs = function(filename, progress, success, error) { console.log('Writing NTFS FS'); var s = spawn("ntfsclone", ['–restore-image', '–overwrite', this.dev, filename]); var err_msg = ''; s.on('error', function(err) { err_msg = err; }); s.stderr.on('data', function(data) { err_msg += data.toString(); }); s.stdout.on('data', function(data) { var match = data.toString().match(kNtfsWriteFsProgressRegex); if(!match) { return; } progress(match[1]); }); s.on('exit', […]

为数组的每个元素发出查询

我目前正在查询我的mondo数据库在一个集合中返回一个数组的URL的数组。 然后,我想使用该数组来通过另一个集合,并find前一个查询的返回数组中的每个元素的匹配元素。 在数组上使用forEach并进行个别查询是否正确? 我的代码看起来像这样,第一个函数getUrls很好。 目前我得到的错误是: (节点:10754)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):TypeError:无法读取未定义的属性“限制”(节点:10754)[DEP0018]弃用警告:弃用未处理的承诺拒绝。 将来,未处理的承诺拒绝将使用非零退出代码来终止Node.js进程。 async function useUrls () { let domains = await getUrls() let db = await mongo.connect("mongodb://35.185.206.31:80/lc_data") let results = [] domains.forEach( domain =>{ let query = {"$match": {"email_domain": domain} } let cursor = db.collection('circleback') .aggregate([query], (err, data) =>{ if(err) throw err; console.log("cb", data) }).limit(1100) })