我已经更新meteor到meteor1.3.2.4。 并面临这个问题。 我也更新了最新版本的所有软件包。 错误:path没有path:/ 我在“ meteor ”和“ meteor运行 – 生产 ”这两个环境中都试过了,同样的错误也会在控制台上显示出来。 我已经安装了下列软件包。 accounts-oauth 1.1.12 Common code for OAuth-based login services accounts-password 1.1.8 Password support for accounts autopublish 1.0.7 (For prototyping only) Publish the entire database to all clients blaze-html-templates 1.0.4 Compile HTML templates into reactive UI with Meteor Blaze cfs:gridfs 0.0.33 GridFS storage adapter for […]
我正在玩节点和fifos,正在得到一些我无法解释的怪异行为。 基本上,我使用spawn创build一个fifo,创build一个写入到该FIFO的stream,将数据传输到写入stream,并产生一个从fifo读取的cat命令。 如果我然后将cat命令的结果传递给标准输出,但是如果将它们传输到另一个文件则不起作用。 请参阅下面的代码 注意:这种行为只有在写入足够的数据来写入缓冲区时才会出现 var fs = require('fs'), stream = require('stream'); // create read stream var rs = fs.createReadStream('testinput') var spawn = require('child_process').spawn; // create fifo var fifo = spawn('mkfifo', ['testfifo']); fifo.on('exit', function() { // when fifo is created, proceed // create outfile and attach fifostream var ws = fs.createWriteStream('testoutput') var fifows = fs.createWriteStream('testfifo'); […]
我正在使用'multiparty'parsing器来读取和处理我的应用程序中的multipart-form-data。 我的应用程序中间件读取上传的文件内容,即时parsing,如果成功,则发送到下一个中间件。 如果没有,我必须中止请求并返回错误。 /** * Middleware to read n parse uploaded multi-part form data * for campaign creation. * After successful parse, sends to next layer. * **/ var mp = require('multiparty'); module.exports = function(req, res, next) { console.log("File processor at work…"); var form = new mp.Form(); form.on('part', function(part) { if (!part.filename) { part.resume();} else […]
我的应用程序需要创build一个PDF文件,然后将其上传到另一台服务器。 上传通过request NPM包中的post方法发生。 一切工作正常,如果我传入一个fs.createReadStream : const fs = require('fs'); const params = {file: fs.createReadStream('test.pdf')}; api.uploadFile(params); 由于PDFKit也实例化了一个读取stream,所以我试图直接把它传递给后面的参数: const PDFDocument = require('pdfkit'); const doc = new PDFDocument(); doc.text('steam test'); doc.end(); const params = {file: doc}; api.uploadFile(params); 但是,这会产生一个错误: TypeError:path必须是一个string。 收到[function] 如果我看PDFKit源代码,我看到(在coffeescript): class PDFDocument extends stream.Readable 我是新来的stream,很明显,我不明白这里的区别。 对我来说,如果它们都是可读的stream,那么它们都应该能够以相同的方式传递。
我有两个PCMstream( decoder1 + decoder2 ): var readable1 = fs.createReadStream("track1.mp3"); var decoder1 = new lame.Decoder({ channels: 2, mode: lame.STEREO }); readable1.pipe(decoder1); 和 var readable2 = fs.createReadStream("track2.mp3"); var decoder2 = new lame.Decoder({ channels: 2, mode: lame.STEREO }); readable2.pipe(decoder2); 现在我想把stream传输到一个混合函数中,我可以使用这个缓冲区函数: function mixStream(buf1, buf2, callback) { // The mixStream-Function is not implemented yet (dummy) var out = new Buffer(buf1.length); […]
我使用unzip节点模块解压缩我的binary-data (来自request模块)。 当request模块的response不包含zip文件夹binary data (如果响应没有zip文件夹数据,其他二进制数据),在某些情况下失败。 我如何处理这个例外。 const request = require("request"); const unzip = require('unzip'); const stream = require('stream'); var options = { method: 'GET', url: /*URL*/, encoding: null }; request(options, function (error, response, body) { zipExtract(error, body); }); zipExtract: function zipExtract(error, zipData) { if (error) { console.error(error); } else { try { //create stream object […]
我正在尝试使用Sequelize获取特定表的标题。 这样做,我发现返回的RawDataPackets被返回两次。 这是stream发送数据包两次或更多次的约定吗? 如下所示,我给了标题两次。 如果是这样,我该如何处理? 我正在考虑使用_.chain.head.flatten.map.value但如果是约定,我想有一个更好的方法。 /* Returns an array of headers * @param {string} tableName * @param {function} next * @returns {Array} */ let getHeaders = function getHeaders(tableName, next) { let query = `SHOW COLUMNS FROM ${tableName}`; //TODO: change to spread db.sequelize.query(query) .then((results, metadata) => { console.log("flatten,",_.flatten(results)); }) .catch((err) => { console.error(err); }); }; […]
我有一个问题,试图从elasticsearch检索数据(操作系统Ubuntu,节点v4.2.6,res对象来自明确作为一个可写的stream)。 我没有故意使用elasticsearch.js驱动程序。 如果我使用ES驱动程序,结果保持不变。 这是我的代码: function getNextChunk() { console.log(process.memoryUsage()); console.log("Getting chunks…"); var options = { method : 'POST', url : myHost + '/_search/scroll', json : true, body : { scroll: '60s', scroll_id: globalScope.scrollId }}; request.post(options, function (err, resp, data) { if (err) return console.log(err); if (!data.hits.hits.length) { console.log("Done!"); return res.end(); } if (!res.write(JSON.stringify(data.hits.hits))) res.once('drain', function() { […]
我使用PHP和node.js(使用socket.io库)build立了一个小聊天, 本质上,我使用node.js作为聊天服务器和PHP来处理实际的网页。 Vagrant可以select与用户共享您的HTTP服务器: https : //www.vagrantup.com/docs/share/http.html HTTP服务器在端口80上运行,node.js在端口3000上运行。 在chat.php页面上,我有这样的代码行: socket = io.connect("http://localhost:3000"); 当我执行vagrant share命令时,它提供了一个可以提供给其他人的URL,他们将能够访问该站点。 所以给定这个URL,我编辑上面提到的代码行来包含这个URL: socket = io.connect("http://ugly-elk-1232.vagrantshare.com:3000"); 然后我开始SSH进入无家可归并从那里开始节点。 但是它不起作用。 在聊天页面上,当socket.io尝试访问端口3000时,可以看到超时错误。 这是我在控制台中得到的错误(在铬): GET http://ugly-elk-1232.vagrantshare.com:3000/socket.io/?EIO=3&transport=polling&t=Lcp9sZh net::ERR_CONNECTION_TIMED_OUT (这个URL是随机的,每次运行stream浪分享的时候都会改变,但是我总是在聊天页面上更新它) 以下是我的vagrantfile中的内容: # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "scotch/box" config.vm.network "private_network", ip: "192.168.33.10" config.vm.hostname = "scotchbox" config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", […]
我正在从一个URL下载一个文件,然后我想要将该文件的元数据写入到目标stream,只有当我确定目标文件被创build(即在fs.createWriteStream(path)成功后)。所以我有使用可写入stream的“开放”事件继续进行。 但是,这段代码恰好在第二个pipe道上给出了错误: Cannot call method 'pipe' on undefined 除此之外还有更多的代码使用这里计算的哈希值。 但不知怎的,我现在卡住了这个错误。 我一直在这方面苦苦挣扎了好一阵子。 任何帮助/指针非常赞赏。 另外我试图运行这个例子 var fs = require('fs'); var digestStream = require('digest-stream') callHandle(); function callHandle(){ var stream = request.get(url) var result = {} handle(reader, result) } function handle(reader,metadata){ const writer = fs.createWriteStream('pathToFile'); writer.on('open', function(){ reader.pipe( digestStream('sha1', 'hex', function(digest, length) { result.sha1 = digest; result.size = length; […]