【问题标题】:Unable to write to file in message handler无法在消息处理程序中写入文件
【发布时间】:2019-01-08 11:20:41
【问题描述】:

我正在编写一个 Discord 机器人,它可以写入 glitch.com 上的本地文本文件。

当我使用ready 事件处理程序时,我的程序能够很好地写入文件:

client.on('ready', () => {
  fs.appendFile('./log.txt', 'Hello\n', (err) => {
    if(err) throw err;
  });
});
//Writes to file

但是,当我尝试使用 message 事件处理程序写入同一个文件时,什么也没有发生:

client.on('message', (message) => {
  fs.appendFile('./log.txt', 'Hello\n', (err) => {
    if(err) throw err;
  });
});
//Does not write to file

我需要更改此文件的权限吗?或者从本地文件中更改它?任何帮助将不胜感激。

【问题讨论】:

    标签: node.js fs discord.js


    【解决方案1】:

    我认为这样的事情可能有效,我没有时间测试它,但它使用 writeFile() 方法而不是 appendFile() 方法

    client.on('message', (message) => {
     fs.writeFile('./log.txt', message, (err) => {
         if(err) throw err;
      });
    });
    

    假设您已经拥有本地文本文件,则无需创建新文件。所以你也可以使用writeFile(),我能看到的唯一问题是它可能会在每条消息中刷新文件,但你可以使用消息收集器来解决这个问题,它每说 100 条消息就更新文件。

    【讨论】:

    • 你可能想做message+'\n' 这样消息会一行一行地传递
    【解决方案2】:

    使用appendFileSync 而不是appendFile 应该可以解决您的问题,因为appendFileSync 更可靠并且产生错误的机会更少。祝你好运!

    【讨论】:

    • 没有任何变化。
    • 可能与 Glitch.com 本身有关;您应该在您的计算机上本地尝试此操作,以检查它是否在那里工作。
    • 刷新应用程序后它确实会写入。我怎样才能使它不必刷新以显示写入内容?
    • 再一次,它可能与 Glitch.com 操作代码的方式有关;我已经在我的端(在我的 PC 上本地)尝试了这段代码,并且在收到消息时它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2013-03-06
    相关资源
    最近更新 更多