Tag: co

file upload与nodejs koa co-busboy

使用KOA上传文件时,我使用co-busyboy来parsing文件字段。 官方示例如下所示: var parse = require('co-busboy') var parts = parse(this); var part; while (part = yield parts) { if(!part.length) //it is a stream part.pipe(fs.createWriteStream('some file.txt')); } 由于某些原因,我想将所有“部分”stream保存到一个数组中,并在获取所有文件stream时执行写入的实际文件。 即: var parse = require('co-busboy'); var parts = parse(this); var part; var partArrays = []; var cnt = 0; while(part = yield parts){ partArray[cnt++] = part; } //after […]

Nodejs程序不会终止

这个程序不会在控制台中终止,我必须使用Ctrl-C。 文档没有提供任何线索。 尝试了各种东西,如返回,但只是不能让它终止,它只是挂在控制台。 控制台中的最后一件事是“现在我们在这里”。 var fs = require('fs'); var path = require('path'); var co = require('co'); var prompt = require('co-prompt'); var program = require('commander'); program .arguments('<file>') .option('-i, –Object name <objectName>', 'DP device IP address') .action(function(file) { co(function *() { var objectName = yield prompt('Object Name: '); console.log('\nObject Name: %s file: %s',objectName, file); notmain(file, objectName); console.info('now […]

节点asynchronous脚本有时会意外结束

我有一个节点脚本调用很多进程打包文件。 大多数情况下,这种方法很好,但是偶尔也可能(每5次电话中平均有1次),它只停在中间,总是在同一个地方。 具体而言,失败时的日志结尾如下所示: Finished task 1! Compiling jsajax.js… Compiling apps.js… 我没有得到任何错误或任何东西,所以我不知道甚至看什么。 这里的设置是我的主文件(index.js)使用co和生成器来调用所需的asynchronous进程,并产生结果。 其中的一部分是吞噬,这是发生这个问题的地方。 我在这里包含了调用代码和gulp任务,因为剩下的代码太长,无法显示所有内容。 如果您认为需要的话,我很高兴收录更多。 谢谢! 调用函数: const createJS = function* createJS () { try { yield gulpFile.createJS(); return 0; } catch(err) { console.error(err); return CONSTANTS.ERROR; } }; 吞噬任务: const createJS = function () { const buildProps = PropertiesReader('build.properties'), distLoc = buildProps.get('distLoc'), installLoc = buildProps.get('installLoc'), […]

生成器 – thunkifying JSON.parse返回奇怪的结果

我正在尝试使用co和生成器来读取JSON文件。 test.json包含: { "hello": "world" } 这通过jsonlint所以它应该是有效的。 目前这里是我的代码: #!/usr/bin/env node –harmony var co = require('co'), fs = require('fs'), thunkify = require('thunkify'); var read = thunkify(fs.readFile); var JSONParse = thunkify(JSON.parse); var log = console.log.bind(console); co(function *(){ var fileContents = yield read('test.json', 'utf-8'); var works = yield JSONParse(fileContents) log(works) })() 只有一个空的对象被logging。 然而, fileContents已满,所以它似乎是破碎的JSON.parse部分。 我究竟做错了什么?

蓝鸟,而不是Co在Coa?

似乎Bluebird与发生器/协程相关的function重叠。 蓝鸟被认为具有出色的速度性能,所以出于讨论的缘故(假设上述重叠前提是真实的),如果想在Koa中用Bluebird代替Co(Node.js上下文),是否可以很容易地完成而不会减lessKoafunction,如果是的话如何? (我的猜测是不能实际完成的,因为Koa是build立在Co之上的,并且没有明确地暴露它,但是Facade它。这样的replace看起来就等于用Bootstrap中的其他东西来代替jQuery)

通过yield / generator来理解代码stream

我已经阅读了几个使用JavaScript生成器的代码示例, 比如这个 。 我能想到的最简单的发电机组块就是这样的: function read(path) { return function (done) { fs.readFile(path, "file", done); } } co(function *() { console.log( yield read("file") ); })(); 这确实打印出file的内容,但是我的挂断是在done调用的地方。 看起来,yield是语法糖,用于包装它在callback中返回的内容,并适当地分配结果值(至less在co的情况下,将错误参数引发到callback函数中)。 我对语法的理解是否正确? 使用yield时的yield是什么?

包含在可返回的生成器中的nodejs child_process.spawnSync或child_process.spawn返回输出

因为有一段时间我正在努力达到目前为止还没有解决的问题。 使用nodejs,我喜欢在命令退出后运行交互式sh命令并使用sh命令输出。 我喜欢编写一个可收缩的generator函数来封装交互式shell命令的运行并返回shell命令的输出。 方法1:shelljs shelljs 我用shelljs取得了一些成功,但是在某些时候它不会跑得更远。 问题1:是否有可能获得shelljs到我可以inheritancestdio并使shelljs函数可屈服的点? 方法2:child_process.spawnSync child_process.spawnSync 最后我发现了child_process.spawnSync并很高兴,至less我可以运行交互式sh命令而不会出现任何问题options: { stdio: 'inherit' } 但我还没有find如何取回child_process.spawnSync的输出。 问题2:如何将spawnSync封装到返回child_process输出的生成器函数中? 方法3:共同子女过程 我也试过共同子女的过程 。 它似乎运行,但不与stdio互动。 有这个问题 ,我真的不明白。 问题3:有人可以解释我/发表一个例子如何共同subprocess将与stdioinheritance工作。 方法4:用蓝鸟promisify child_process.spawn() 我打开蓝鸟的问题 ,如果child_process.spawn()是promisifiable 所以我的问题。 有人可以给我一个例子,说明如何运行一个交互式shell命令,该命令可以封装在一个返回shell命令输出的可生成生成器函数中? 我很乐意接受新的方法。 我创build了一个在github上可用的npm模块,你可以将它分叉并贡献。 thx提前。

通过yield&co。获得承诺的价值

我试图找出如何通过yield来获得承诺的价值,可能与“合作”: function *(){ var someVar = yield functionThatReturnsAPromise(); } 被调用的函数不是一个生成器,只是一个正常的函数。 有了上面的一些someVar == Promise ,但我想要解决的价值。 公司或其他图书馆是否有办法做到这一点?

如何用和谐旗启动全局npm模块

我写了一个可以安装在全局dm-npm的npm模块。 我喜欢在该模块中使用co。 我怎样才能告诉模块,它启动全球时,与和谐标志运行? 这里是package.json: { "name": "dm-npm", "version": "0.0.3", "description": "npm helper", "main": "index.js", "scripts": { "test": "mocha –reporter nyan", "start": "node –harmony ./bin/dm-npm" }, "repository": { "type": "git", "url": "https://github.com/divramod/dm-npm.git" }, "keywords": [ "npm", "template" ], "author": "", "license": "ISC", "bugs": { "url": "https://github.com/divramod/dm-npm/issues" }, "homepage": "https://github.com/divramod/dm-npm", "devDependencies": { "chai": "^2.1.0", "mocha": "^2.1.0" }, […]

如何pipe理对共同请求模块和NodeJs中的文件的响应?

我使用Co-Request从http url中读取Zip文件,并且我有下面的代码从服务器读取.. 该代码已经工作。 但是我不知道如何写一个文件的响应Zip。 var co = require( "co" ); var request = require( "co-request" ); var options = { url: "http://www.example.com/sample.zip", headers: { 'Token': Appconfig.Affiliate_Token, 'Affiliate-Id' : Appconfig.Affiliate_Id } } console.log( "Downloading : zip file" ); var j = yield request( options ); 共同请求实际上是对Request的包装,我发现下面的代码将文件传输到stream中。 但不知道如何使用共同请求和yield来编写相同的代码。 request.get('http://example.com/img.png').pipe(request.put('http://example.com/img.png')) 请帮助如何使用良率和共同请求将响应zip写入文件