摩卡js断言悬挂使用诺言?

"use strict"; let assert = require("assert"); describe("Promise test", function() { it('should pass', function(done) { var a = {}; var b = {}; a.key = 124; b.key = 567; let p = new Promise(function(resolve, reject) { setTimeout(function() { resolve(); }, 100) }); p.then(function success() { console.log("success—->", a, b); assert.deepEqual(a, b, "response doesnot match"); done(); }, function […]

在forEach循环中保证

在一个Node应用程序中,我需要以同步的方式迭代一些项目,但循环内的一些操作是asynchronous的。 我的代码现在看起来像这样: someAPIpromise().then((items) => { items.forEach((item) => { Promise.all[myPromiseA(item), myPromiseB(item)]).then(() => { doSomethingSynchronouslyThatTakesAWhile(); }); } } 当这个items是1的数组的时候,这会有奇效。但是,一旦有多个项目, promise.all()就会立刻为数组中的每个项目开始,而不用等待循环中的操作结束。 所有这一切…如何确保数组中的每个项目的整个操作同步运行(即使某些操作是asynchronous并返回一个承诺)? 非常感谢! ñ

如何用gulp-eslint修复文件?

我正在用eslint喝酒 。 没有eslint ./src –fix ,我只是运行eslint ./src –fix 。 我不知道如何做到这一点吞咽。 我在下面尝试,设置修复是真实的,但它不修复任何文件: gulp.task('lint', ['./src/**.js'], () => { return gulp.src() .pipe($.eslint({fix:true})) .pipe($.eslint.format()) .pipe($.eslint.failAfterError()); }); 我想要修复./src下的所有文件。 我如何做到这一点?

构造函数中的事件处理程序与构造函数之外的事件处理程序的行为不同

我有一个扩展EventEmitter的对象的两个实例,并监听一个名为finish的事件。 如果我在构造函数外部设置事件处理程序,一切都按预期工作。 每个实例都会听到它触发的finish的发生。 但是,如果我在构造函数中设置了事件处理程序,那么只有第二个创build的实例才会听到该事件,并对事件做出反应。 这里是代码: var util = require('util'); var EventEmitter = require('events').EventEmitter; var fs = require('fs'); var NEXT_ID = 0; var MyEmitter = function() { EventEmitter.call(this); this.id = NEXT_ID; NEXT_ID++; console.log('CREATED EMITTER WITH ID:', this.id) self = this; this.on('finish', function() { console.log('FINISH EVENT . CONSTRUCTOR LISTENER .', 'LISTENER ID:', self.id, '. ORIGINATOR ID:', this.id); […]

如何更新string集(SS)types的Dynamodb中的项目?

我创build了一个String Settypes的属性。 当我创build创build项目和分配typesSS的属性一切正常。 但是,当我尝试更新此属性时,数据types更改为列表(“L”)。 我试试这个: qw = new AWS.DynamoDB.DocumentClient(); var params = { TableName : "myTable", Key: { "id": somekey }, UpdateExpression: "set ssvar= :arrp", ExpressionAttributeValues: { ":arrp": [ "test", "test2" ] } }; qw.update (etc.) 这导致在dynamodb中的数据types的改变,而不是一个string集我得到一个列表: "ssvar": { "L": [ { "S": "test" }, { "S": "test2" } ] } 我已经尝试了下面的所有types的解决scheme,但总是我的数据types被改变。 ExpressionAttributeValues: { ":arrp": […]

使用Node.js和SSH2从SFTP服务器读取文件

我有一个很奇怪的问题,在Node.js中读取stream。 我正在使用SSH2在我和sftp服务器之间创build一个sftp连接。 然后我尝试从sftpstream创build一个读取stream。 从读取stream的发射'数据'事件我追加数据到一个数组。 当读取stream的'close'事件发生时,我调用Buffer.concat创buildconcat所有我已经检索到的数据块到一个缓冲区。 这是在堆栈溢出问题中所描述的其他问题中所描述的相同技术。 例如这里 。 但是,我无法使用我检索的数据。 看起来像缓冲区的大小减less了32个字节,然后我试图检索的文件(从计算检索的数据的长度)。 这可能与我的SFTP连接有关吗? 或者我如何创build我的阅读stream? 如果重要,该文件是ziptypes。 当我试图解压文件(在node.js和手动)后读取缓冲它不起作用。 调查后我发现: 当我在文件上使用readdir时,文件的大小是正确的。 使用FTP(JSFTP)对我的开发FTP服务器使用上述相同的技术很好。 任何build议表示赞赏! 这是我的代码: var Client = require('ssh2').Client; var m_ssh2Credentials = { host: config.ftpHostName, port: config.ftpPort, username: config.ftpUser, password: config.ftpPassword, readyTimeout: 20000, algorithms: { cipher: ["3des-cbc", "aes256-cbc", "aes192-cbc","aes128-cbc"]} }; … var conn = new Client(); var dataLength = 0; conn.on('ready', […]

Karma:加载“karma-phantomjs-launcher”插件时出现错误

我正在尝试在Node.js(6.1.0)环境中的Centos 7上运行testing。 跑完之后 ./node_modules/karma/bin/karma –log-level debug start 我收到错误消息: Error during loading "karma-phantomjs-launcher" plugin: Path must be a string. Received null 在karma.conf.js中我提到了插件和浏览器: 'plugins': ['karma-mocha', 'karma-chai', 'karma-sinon', 'karma-chai-sinon', 'karma-coverage', 'karma-jasmine', 'karma-phantomjs-launcher', 'karma-chrome-launcher', 'karma-babel-preprocessor'], browsers: ['PhantomJS'], 我也为本项目在本地安装了所有插件。 所有其他插件加载没有问题。 我也有相同的项目运行在Windows 7环境没有问题。

.save()不是函数Mongoose

我一直得到一个问题,newUser.save()不是一个问题。 这是我以前用过的mongoosefunction。 我需要正确的mongoose,我不确定为什么这个错误发生。 欢迎任何帮助。 我得到的错误是TypeError: newUser.save is not a function 我的模型文件夹中的user.js var mongoose = require('mongoose'); var bcrypt = require('bcryptjs'); var Schema = mongoose.Schema; var UserSchema = new Schema({ name: String, email: String, password: String, info: String }); var User = module.exports = mongoose.model('User', UserSchema); module.exports.createUser = function(newUser, callback){ bcrypt.genSalt(10, function(err, salt) { bcrypt.hash(newUser.password, salt, function(err, […]

“Node.js中的某些MongoDB ObjectID”的参数必须是“string”

我在Node中得到这样的错误: TypeError: Argument must be a string at TypeError (native) at Buffer.write (buffer.js:791:21) at serializeObjectId <snip> 这些条件是ObjectID在使用MongoDB进行查找操作时的一些用法。 ObjectID的一些用法引发了这个错误,有些则没有。 唯一重要的是ObjectID来自哪里。 如果它是从现有的collections拉,它的工作。 如果我自己生成它(例如,使用ObjectID.createFromHexString),它失败,如上所述。

数组作为Postman中GET请求的参数

我必须在GET请求中发送id数组作为参数。我可以在Postman(APItesting的Google Chrome扩展)中testing它吗? 情况是我有urlwww.something.com/activity/poi_ids poi_ids应该包含像[316,318] 在api方面使用快递, app.get('/activity/:poi_ids',function(req,res){ var poi_ids = req.params.poi_ids; ……. ……. }); 我已经看过它,但它只是为了后期的要求