【问题标题】:How do I write image to a specific directory with fs module in nodejs?如何在 nodejs 中使用 fs 模块将图像写入特定目录?
【发布时间】:2021-09-15 14:25:17
【问题描述】:

这是我当前的代码:

await createCollage(pfparray, collageWidth).then((imageBuffer) => {
        pfpcollage = new MessageAttachment(imageBuffer, 'collage.png');
        fs.writeFile(`./images/${params.msg.author.id}.png`, imageBuffer, () => console.log('image downloaded'));
        }).catch(e => params.msg.channel.send({embed: {title: "Could not generate collage",description: e + " | error!"}})); 
             }

所以在运行时,它应该将图像文件保存在目录“images”中,并以作者的 id 作为名称。但是它控制台日志但实际上并没有在目录中保存任何内容。当我尝试保存到任何特定目录时会发生这种情况。当我只是尝试在没有任何目录的情况下保存“${params.msg.author.id}.png”时,它会正确地将其保存在同一目录中。可能是什么问题?

【问题讨论】:

  • 你是在windows平台还是mac/linux平台上运行这个?
  • @h-sifat 我在 Docker 上运行它,所以我认为是 linux
  • 首先导入路径模块,然后在 writeFile 中尝试路径参数: path.join(__dirname, "image", "your image name")
  • @h-sifat 嘿,有人向我推荐了类似的东西。你是对的,路径没有被解决。谢谢!

标签: javascript node.js discord.js fs


【解决方案1】:

正如@h-sifat 向我展示的那样,路径似乎没有得到解决。我导入了路径模块(Typescript [TS1259] 在这里遇到错误),我不得不这样做

从“路径”导入 * 作为路径

之后,我将代码更新为:

fs.writeFile(path.resolve(__dirname,`./images/${params.msg.author.id}.png`), imageBuffer, () => console.log('image downloaded'));

这似乎成功了!

【讨论】:

  • 似乎您正在使用打字稿,因此您可以将导入行编写为:从“路径”导入路径。因为路径是默认导出,您不需要使用“* as”关键字。你可以给任何你想要的名字,例如,import bla_bla_bla from "path"。
  • @h-sifat 是的,我确实这样做了,但我遇到了错误 TS1259,一个关于它的 github 问题告诉我使用 import * as path from 'path'
猜你喜欢
  • 2019-06-16
  • 2021-05-04
  • 1970-01-01
  • 2015-07-02
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 2021-04-04
相关资源
最近更新 更多