我正在使用Node.js,我需要在用户下载后删除文件.有没有办法在管道进程结束后调用回调方法,或为此目的的任何事件?
exports.downloadZipFile = function(req, res){
var fileName = req.params['fileName'];
res.attachment(fileName);
fs.createReadStream(fileName).pipe(res);
//delete file after download
};
Run Code Online (Sandbox Code Playgroud) 我正在开发一个用电子构建的应用程序,它应该与wavesurfer.js一起显示表示音频文件的波形.但是,我无法使用fs模块打开文件,并通过Blob将文件内容推送到waveurfer.文件加载,一切似乎都有效,但解码waveurfer说Error decoding audiobuffer.
我想的两件事可能会影响到这一点:
fs.readFile函数将编码作为第二个参数type属性定义mimetype但是,到目前为止,这两种方法都无法解决问题.
我希望有人有解决方案.(也可能是fs.readFile功能完全是错误的方式,有一个更好的方式;我只是寻找一个相对高效的方式打开文件,任何帮助表示赞赏)干杯!
这是代码......
(我要省略所有的电子样板,你可以通过这样做轻松搞定git clone https://github.com/sindresorhus/electron-boilerplate/) - 在脚本中加入一个脚本标签,main.js在html中的某个地方index.html添加一个div,wave-area并将一个脚本标签添加到wavesurfer.js库中.您还需要演示wav文件的本地副本.
然后在main.js文件中......
var fs = require('fs');
var wavesurfer = Object.create(WaveSurfer);
wavesurfer.init({
container: '#wave-area'
});
fs.readFile('/path/to/demo.wav', function(err, data) {
if (data && !err) {
console.log('has data and no error!');
}
var file = new window.Blob([data]);
wavesurfer.loadBlob(file);
}
wavesurfer.on('loading', function(e) {
console.log('loading', e);
});
wavesurfer.on('error', …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它允许用户连续将本地文件夹的内容上传到云中的文件夹。该应用程序是用electron和node.js
所以我需要帮助的代码是这样的:
fs.watch(getHomeDirectory(), (eventname, filename) => {
upload(
filename,
`${getHomeDirectory()}/${filename}`
);
})
Run Code Online (Sandbox Code Playgroud)
此函数作为按钮上的事件侦听器的一部分被调用。
有一个 gettergetHomeDirectory函数,用于获取文件夹的用户目录,然后upload是上传在该文件夹中添加或更改的文件的函数。
我想要这样,只要将文件添加或更改到目标目录中,应用程序就会不断上传文件。
现在它可以工作,但我希望用户能够关闭它,fs.watch以便他们停止收听文件夹。
我发现了这个堆栈溢出问题: NodeJS: unwatching a file and specified a listener。然而,这只涉及fs.watchFile当我尝试做同样的fs.watch事情时它没有用。
我不知道我需要做什么。
我正在阅读有关Node.js文件系统的文档fs.writeFile(filename, data, [options], callback).所以我注意到我经常看到[选项],但从未用过任何东西.有人能举个例子吗?我所有的情况都没有使用这个选项.
我想创建一个文件foobar.但是,如果用户已经有一个名为的文件,foobar那么我不想覆盖他们的文件.所以我只想创建foobar它,如果它不存在.
起初,我认为我应该这样做:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
Run Code Online (Sandbox Code Playgroud)
然而,看着官方文档的fs.exists,它读取:
fs.exists()是一种时代错误,只是出于历史原因而存在.几乎没有理由在你自己的代码中使用它.
特别是,在打开文件之前检查文件是否存在是一种反模式,使您容易受到竞争条件的影响:另一个进程可能会在调用fs.exists()和fs.open()之间删除该文件.只需打开文件并在错误处理时处理错误.
fs.exists()将被弃用.
很明显,节点开发人员认为我的方法是个坏主意.另外,我不想使用将被弃用的函数.
如何在不写现有文件的情况下创建文件?
我试图使用节点js读取csv文件.她是我的代码
fs.readFile(config.csvUploadPath, function read(err, data) {
if (err) {
throw err;
}
console.log(data + 'my data')
});
Run Code Online (Sandbox Code Playgroud)
安慰:
ID
D11
D33
D55
Run Code Online (Sandbox Code Playgroud)
在这里,我想获取列ID中的元素并将它们存储在数组中.我怎样才能做到这一点?谁能建议我帮忙.谢谢.我的控制器:
var partnersModel = new partners(params);
fs.readFile(config.csvUploadPath, function read(err, data) {
if (err) {
throw err;
}
dataArray = data.toString().split(/\r?\n/);
dataArray.forEach(function(v,i){
if(v !== 'DUI'){
partnersModel.dui.push(v);
}
});
});
partnersModel.save(function(error, response){
Run Code Online (Sandbox Code Playgroud) 我正在使用 Node.js 创建一个 Discord.js 机器人,该机器人在语音通道中记录用户的音频。它加入一个频道并开始分别收听每个用户的声音。它记录到 .pcm 文件(因此只有原始数据)。
现在,这可行了,但 Discord 音频流的性质导致了问题。从 Discord 的 API 获取的音频流仅在特定用户说话时发送数据,而不是在他们沉默时发送数据。这会导致用户说话的时刻被粘贴到彼此之后,而中间没有沉默。
举个例子,我讲5秒,然后停止讲5秒,然后再开始讲,依此类推。如果我这样做 1 分钟,我将得到一个只有 30 秒长的文件,因为 5 秒的静默没有记录在流中。
代码看起来像这样(这receiver是 Discord API 提供的语音连接,当我发出命令时流会任意结束):
const audioStream = receiver.createStream(user, {mode:'pcm', end:'manual'};
const outputStream = fs.createWriteStream('SOME_PATH');
audioStream.pipe(outputStream);
audioStream.on('end', () => {
console.log('Ended stream')
});
Run Code Online (Sandbox Code Playgroud)
输出audioStream是 16 位小端 44100 Hz 流(因此仅当用户说话时)。
有没有办法可以用某种静默帧来填补数据空白?或者也许保持静默流运行并仅在数据进入时才将其放入?
我正在使用Angular 10,Electron 10.0和electron-builder v22.8.0.
启动 Electron 应用程序时,我在控制台中收到以下错误:
fs.existsSync is not a function when used in electron
getElectronPath @ ./node_modules/events/events.js:6
<anonymous> @ ./node_modules/events/events.js:17
./node_modules/electron/index.js @ ./node_modules/events/events.js:19
__webpack_require__ @ ./webpack/bootstrap:79
./src/app/projectview/new/new.component.ts @ ./src/app/projectview/new/new.component.ts:1
[...]
at __webpack_require__ (bootstrap: 79)
Run Code Online (Sandbox Code Playgroud)
错误在这里弹出:
当我导入电子并在渲染器进程中有以下行时会发生这种情况:
fs.existsSync is not a function when used in electron
getElectronPath @ ./node_modules/events/events.js:6
<anonymous> @ ./node_modules/events/events.js:17
./node_modules/electron/index.js @ ./node_modules/events/events.js:19
__webpack_require__ @ ./webpack/bootstrap:79
./src/app/projectview/new/new.component.ts @ ./src/app/projectview/new/new.component.ts:1
[...]
at __webpack_require__ (bootstrap: 79)
Run Code Online (Sandbox Code Playgroud)
nodeIntegration是true在创建BrowserWindow …
我正在使用 nodemailer 和 pdfmake 创建 pdf,并将其在电子邮件的附件中发送。我对 NodeJS 中的文件处理没有太多经验,而且我无法让它工作。
请参阅保存文件的示例。当我检查过类型时,createPdfKitDocument返回NodeJS.ReadableStream.
在 Nodemailer 中,我可以将附件包含为Stream或Readable 查看文档。
但是,我无法在不保存附件的情况下发送附件,并给出文件的路径。
我试图按原样提供ReadableStream返回的内容,这导致了悬而未决的承诺。createPdfKitDocument我尝试用 包裹它Readable.from(),但没有成功。我尝试调用.read()结果,并没有导致悬而未决的承诺,但pdf无法打开。
有什么想法如何将 a 转换ReadableStream为Readable, or Buffer?
我有一个与此类似的问题,并在本期中进行了描述。与 async..await 一起使用时出现的错误中没有堆栈跟踪fs/promises,并且无法确定错误发生的位置。
鉴于应用程序:
foo.js
const { bar } = require('./bar');
async function foo() {
await bar();
}
(async () => {
await foo();
})().catch(console.error);
Run Code Online (Sandbox Code Playgroud)
酒吧.js
const fs = require('fs/promises');
exports.bar = async function bar() {
await fs.readFile('some');
}
Run Code Online (Sandbox Code Playgroud)
当它像这样运行时node foo.js,这会导致没有堆栈跟踪的错误:
[Error: ENOENT: no such file or directory, open '...\some'] {
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: '...\\some'
}
Run Code Online (Sandbox Code Playgroud)
其中error.stack包含'ENOENT:没有这样的文件或目录,打开'...\some'。
当它像包node --stack_trace_limit=100 -r trace foo.js一样运行时trace,就像链接源中建议的那样,这会导致以下堆栈跟踪:
请注意,内部条目呈灰色,可以过滤掉。 …
fs ×10
node.js ×9
javascript ×4
electron ×3
angular ×1
async-await ×1
buffer ×1
csv ×1
discord.js ×1
express ×1
meanjs ×1
pcm ×1
readfile ×1
stack-trace ×1
stream ×1