Tag: 文件io

无限地执行nodejs应用程序的任务

假设我有这样的代码 function execute() { var tasks = buildListOfTasks(); // … } buildListOfTask创build函数的数组。 函数是asynchronous的,可能会发出HTTP请求或/和执行数据库操作。 如果任务列表显示为空或者所有任务都被执行,我需要重复execute相同的例程。 再说一遍,说“无限循环”。 所以,这是应用程序的守护进程。 我完全可以理解如何在同步世界中完成这个任务,但是如何在node.jsasynchronous世界中实现这一目标却有点困惑。

拦截process.stdout.write调用

嘿,看来这应该很简单,但是我一定会错过一些东西。 我尝试使用pipe道和('数据'),但似乎都没有通过我的数据。 我想这样做的原因是我想能够有一个“开发”部分,并有输出stream,但我宁愿不必写入文件,然后从文件中读取,然后stream,如果我可以拦截写电话上的数据。

如何与来自Ruby的节点REPL进行交互

我正在尝试编写一个与Node.js REPL交互的Ruby脚本。 当我做: i = IO.popen('node', 'r+') i.write("console.log('hi')") 写入调用返回写入的大小。 但是,如何取回REPL的输出进行处理? 我试过#read,它不会返回输出。

使用Express时出现“错误:套接字挂断”

当客户端刷新的同时仍然加载一个页面(所以套接字被终止,而我仍在处理请求)时,节点继续退出。 错误: [ERROR] – Error: socket hang up at createHangUpError (http.js:1472:15) at Socket.socketCloseListener (http.js:1522:23) at Socket.EventEmitter.emit (events.js:95:17) at TCP.close (net.js:465:12) (at lib/Maintenance.js:38) 我试着附加on('error', …到: req对象 listen的返回值(我正在使用Express) 我的get , use和post方法的返回值。 然而,我似乎无法捕捉到这个错误。 它仍然被抛出,没有我的error handling程序反应。 我可能会错过什么?

如何使用node.js将大数组写入.txt文件?

我想,明显的解决scheme是fs.writeFile。 但是这个问题的答案表明我应该使用Stream技术。 我目前正在尝试这个代码,以通过将其转换为数组从文本文件中删除一行: var index = randomIntFromInterval(1, unfinished_searches.length-1); // remove index unfinished_searches.splice(index, 1); fs.truncate('unfinished_searches.txt', 0, function() { var file = fs.createWriteStream('unfinished_searches.txt'); file.on('error', function(err) { /* error handling */ }); unfinished_searches.forEach(function(v) { file.write(v.join(', ') + '\n'); }); file.end(); }) 这会返回以下错误: TypeError: undefined is not a function join这一行: unfinished_searches.forEach(function(v) { file.write(v.join(', ') + '\n'); });

如何重新设置标准input后,我已经把它的标准输出?

你好,首先这个问题! 无论如何,我正在写一个小实验来帮助更好地把握stream和更复杂的结合stream和承诺的组合。 但是,我遇到了一个我目前无法解决的问题。 如果你运行我的下面的脚本,然后inputinput,然后按ctrl-d结束input:节点将尝试从标准input读取所需的,但因为标准input结束,立即closures。 那么有没有更好的方法来写这个? 或者有没有办法重置标准inputstream再次input? 还是有更好的方法来停止要求input等待结束事件来解决我的承诺? 同样值得注意的是:在Node 5.1.0上运行,使用ES2015(通过Babel 6) import { Transform, Writable } from 'stream'; import util from 'util'; /** * Generic Transform * A test class to expiriment with creating a series of transforms * * @class * @extends {stream.Transform} */ class GenericTransform extends Transform { constructor (transformCallback, options={}) { super(Object.assign({}, options, […]

我应该实现自己的缓冲区在Node.js中使用writable.write()吗?

从writable.write()的文档: 返回值指示写入的块是否在内部进行了缓冲,并且缓冲区已超过创buildstream时configuration的highWaterMark。 如果返回false,则应暂停向stream中写入数据的更多尝试,直到发出“drain”事件。 所以,doc一旦writable.write()返回false ,stream应该等待drain事件。 当我读到这个,我想'什么样的API让用户实现IO缓冲? 我是否认为正确? 不过,我希望我错了。 我知道很多实现都使用了缓冲,但是我所看到的只是INTERNAL缓冲区,这是我第一次看到这样的需求。 如果我是正确的,有没有其他的方式来使用streamIO而无需使用Node.js进行外部缓冲区pipe理?

socket io如何将事件发送给好友?

嗨,我正在与节点js聊天,我有一个问题。 聊天是全球性的,没有房间,但用户只能看到和写在他们的好友列表中的用户。 所以当他们连接到服务器时,他们也会发送用户ID和好友列表作为数组。 在服务器我有一个全球variables与在线用户。 现在,哪一个最好的方式把事件发布给好友列表中的用户呢? 这是我现在的代码: var express = require('express'); var cors = require('cors'); var crypto = require('crypto'); var app = express(); var port = process.env.PORT; var mongoose = require('mongoose'); var jwt = require('jsonwebtoken'); var socketio = require('socket.io'); var confdb = require('./lib/config-db.js'); var conf = require('./lib/config.js'); var db = require('./lib/chat-db'); var whitelist = []; var […]

Nodejs任何文件系统提供者

是否有任何nodejs的库,它支持不同types的存储,如FTP,AmazonS3,谷歌存储,文件系统。 而在代码使用透明? 例如,它只有一个列表,读取,写入文件的界面,而单独的工厂正在根据设置创build提供者。

没有收到来自nodejs派生进程的stdout

我试图让nodejs与冒险 (一种基于文本的旧游戏)进行交互。 这个想法是将冒险作为一个subprocess打开,然后通过写入stdin并在stdout上放置一个事件监听器来玩游戏。 当游戏开始时,它打印一个初始的: 欢迎来到冒险! 你想要说明吗? 所以为了说明我的问题,我有一个nodejs + express实例: var childProcess = require('child_process'); var spawn = childProcess.spawn; var child = spawn('adventure'); console.log("spawned: " + child.pid); child.stdout.on('data', function(data) { console.log("Child data: " + data); }); child.on('error', function () { console.log("Failed to start child."); }); child.on('close', function (code) { console.log('Child process exited with code ' + code); […]