Tag: fs

在fs.readFile()的callback函数中使用Email.send时发生meteor“光纤”错误

当我尝试在Email.send的callback中使用Email.send时,我得到Error('Can\'t wait without a fiber') 。 如果我直接打电话给Email.send我不会得到这个错误。 这是错误: (STDERR) /Users/james/.meteor/packages/meteor-tool/.1.1.8.tvnipv++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:155 throw new Error('Can\'t wait without a fiber'); ^ => Exited with code: 8 (STDERR) Error: Can't wait without a fiber at Function.wait (/Users/james/.meteor/packages/meteor-tool/.1.1.8.tvnipv++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:155:9) at Object.Future.wait (/Users/james/.meteor/packages/meteor-tool/.1.1.8.tvnipv++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:397:10) at smtpSend (packages/email/email.js:86:1) at Object.Email.send (packages/email/email.js:176:1) at email.js:49:17 at fs.js:272:14 at Object.oncomplete (fs.js:108:15) 这是我的JavaScript。 请注意,我使用了一个虚拟的MAIL_URL来保护无辜者。 if (Meteor.isClient) { var […]

fs.createReadStream – 限制一次传输的数据量

如果我只想一次读取10个字节,或者每次读取一行数据(查找换行符),可以像这样传递fs.createReadStream()选项 var options = {} var stream = fs.createReadStream('file.txt', options); 这样我可以一次限制数据stream的数量吗? 看着FS文件,我没有看到任何可以让我这样做的选项,即使我猜测这是可能的。 https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options

nodejs在本地文件系统和Amazon S3文件系统之间切换的最佳方法是什么?

我正在寻找使用本地文件系统和Amazon S3文件系统进行切换的最佳方式。 我想理想情况下,我想要一个封装到我可以编码的两个文件系统。 configuration更改会告诉包装器使用哪个文件系统。 这对我来说很有用,因为开发人员可以使用本地文件系统,但是我们的托pipe环境只需更改configuration选项即可使用Amazon S3。 有没有现有的包装这样做? 我应该写我自己的包装? 有没有另一种方法我不知道会更好?

使用fs将上传的图像重命名为multer

当用户上传一张图片 – 我使用的是一个名称包含一个空格的方式 – 我想用"-"replace空格,然后将文件名保存到我的Mysql表中,然后重命名file upload到新的名称与"-" 。 这是我的代码。 它会重新命名并且Mysql表格会使用连字符保存新名称,但由于某种原因图像不会被上传,甚至没有错误,事实上POST请求实际上是成功的。 router.post('/uploadpost', upload.single('image'), function(req, res){ var name = req.file.originalname; var reName; if(/\s/g.test(name)){ reName = name.replace(" ", "-"); fs.rename(req.file.path, reName, function(err){ if(err){ throw err; } }); }

用fs读取文本文件的上一行/下一行?

我想知道是否完全可以读取文本文件的最后一行。 然后,在那之前读一下。 我可以看到console中的所有数据,但我不知道如何显示一行。 目前,我正在使用fs和byline ,分别编写和读取文件。

将string附加到AWS Lambda中的文本文件Nodejs

场景:文本文件snapshot-ids.txt位于S3存储桶中。 我正在尝试创build一个每日运行的Lambda函数(Cron),它将使用AWS CLI获取卷的快照,然后将该snapshotId保存到S3中的文本文件中。 在下一次创build另一个快照时,新的snapshotId将被保存到S3上的同一文本文件中。 文本文件是snapshotIds的占位符,当达到阈值时,它将删除顶部的snapshotIds并在末尾添加新的(FIFOpipe道)。 对于不使用AWS lambda的人来说,我的问题是将文本追加到variables的最快方法是什么,并用新行返回新variables。 对于了解Lambda的人,这是AWS Lambda的基本代码,我使用fs.appendFile,但是如何使用从s3.getObject()获得的文件并最终将其传递给s3.putObject()? 编辑:这是我的进步: console.log('Loading function'); var aws = require('aws-sdk'); var s3 = new aws.S3({ apiVersion: '2006-03-01' }); var fs = require('fs'); exports.handler = function(event, context) { //console.log('Received event:', JSON.stringify(event, null, 2)); // Get the object from the event and show its content type var bucket = event.Records[0].s3.bucket.name; var […]

Node.js:为什么要在error handling期间返回一个callback的结果?

新手到Node.js在这里。 我正在通过NodeSchool.io上的教程来学习Node.js,并且在一个我们学习模块的教程中,我们被要求写这样的代码: // Some code… function filteredLs(dir, ext, callback) { fs.readdir(dir, function(err, files) { if (err) return callback(err); // return statement necessary here… callback(null, withExtension(files, ext)); // …but not here }) } module.exports = filteredLs; 我的问题是,在像这样的例子中,为什么在处理错误时需要包含return语句,但是当它为空时可以省略? 无论如何,我不明白函数的返回值可能会有什么用处,因为它在完成工作之后才会发生。 为什么它有所作为?

NodeJs:fs.appendFile函数似乎错过了给定的最后一个string

我是新的nodejs我试图追加函数。 当我运行下面的代码,提示他后简单地把用户input,关于歌手,并放入一个歌手名称的文件。 并附加fav歌曲,似乎如果用户input退出它应该被附加到文件,但是,它不? 同时,如果将其更改为appendFileSync(同步版本的FN)出口添加? 码: var readline = require ('readline'); var fs = require('fs'); var rl = readline.createInterface(process.stdin, process.stdout); var singer = { name:'', songs: [] }; rl.question("What is your fav singer? ", function(answer) { singer.name = answer; //creating a file for this singer fs.writeFileSync(singer.name+".md", `${singer.name}\n====================\n\n`); rl.setPrompt(`What's your fav songs for ${singer.name} ?`); rl.prompt(); rl.on('line', […]

如何使用node.js打开服务器上的文件

我正在使用一个Node.js脚本来读取和使用这个函数从.txt文件返回一个随机行: function pickMeal(){ var meals = fs.readFileSync('meals.txt','utf8'); var mealsArray = meals.toString().split('\n'); return mealsArray[Math.floor(Math.random()*mealsArray.length)]; } 在我的桌面上,它工作正常。 当我将.js文件和.txtfile upload到服务器上的某个文件夹时,突然间我收到一个Error: ENOENT, no such file or directory 'meals.txt' 。 我正在使用Amazon EC2服务器,.js脚本和.txt文件位于同一个目录中。 也许这个.txt文件的权限有问题吗? 我已经试过将脚本指向~/folder/meals.txt甚至整个文件的http链接,但是我得到了相同的结果。 感谢您的帮助!

meteorFS.Collection访问服务器上的集合

我正在使用FS.Collection在服务器上传短video文件,然后作为电子邮件中的附件发送。 插入服务器上的集合工作,我可以访问客户端上的集合项目,也可以直接使用文件的pathUrl – localhost:3000/cfs/files/videos/{{item_id}} 我不知道如何访问服务器上的收集。 我想以下面的forms发送带有附件的电子邮件,并需要访问服务器上文件和文件名的path。 我试过了: Email.send({ to: to, from: from, subject: subject, text: text, attachments:[{fileName:"video.mp4", filePath:"/cfs/files/videos/{{item_id}}"}] }); 它显示电子邮件中的附件video播放器,但有错误消息,所以我假设我没有正确访问文件。 我的Collection.js很简单: var videoStore = new FS.Store.GridFS("videos"); Videos = new FS.Collection("videos", { stores: [videoStore] });