【问题标题】:Having trouble writing data to a file using fs (javascript)使用 fs (javascript) 将数据写入文件时遇到问题
【发布时间】:2020-06-15 08:06:40
【问题描述】:

我正在尝试将单独的 json 文件中的变量设置为 false/true,具体取决于它的状态,并且在尝试这样做时遇到错误。

这里是使用的变量:

const fs = require("fs");
const maintenancefile = require("../util/maintenance.json");
let state = maintenancefile.maintenancestatus;
JSON.stringify(state);
let changetofalse = "{\n\"maintenancestatus\": \"false\"\n}"
JSON.stringify(changetofalse);
let changetotrue = "{\n\"maintenancestatus\": \"true\"\n}"
JSON.stringify(changetotrue);

这是我尝试写入文件的过程:

module.exports = {
    name: 'maintenance',
    description: "PUTS BOT IN MAINTENANCE MODE - BOT ADMINISTRATOR ONLY",
    execute(message, args){
       if(message.member.user.id != '294773357864550401') return;
       if(state = "false") {
           fs.writeFile(maintenancefile, changetotrue, (err) => {
            if (err) console.log(err)
          });
           return message.channel.send("BOT PUT IN MAINTENANCE MODE - REQUESTED BY " + message.member.user.tag + " (" + message.member.user.tag + ").")

       }
       if(state = "true") {
           fs.writeFile(maintenancefile, changetofalse, (err) => {
            if (err) console.log(err)
          });
           return message.channel.send("BOT TAKEN OUT OF MAINTENANCE MODE - REQUESTED BY " + message.member.user.tag + " (" + message.member.user.tag + ").")
       }
       return;
       // WIP
    }
}

module.exports.help = {
    name: 'maintenance',
    description: 'PUTS BOT IN MAINTENANCE MODE - BOT ADMINISTRATOR ONLY'
}

我收到以下错误:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL. Received type object
    at Object.open (fs.js:409:3)
    at Object.writeFile (fs.js:1168:6)
    at Object.execute (/Users/name/Downloads/litemoderation-master/commands/maintenance.js:18:15)
    at Client.bot.on.message (/Users/name/Downloads/litemoderation-master/index.js:150:40)
    at Client.emit (events.js:182:13)
    at MessageCreateHandler.handle (/Users/name/node_modules/discord.js/src/client/websocket/packets/handlers/MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (/Users/name/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:103:65)

提前致谢:)

【问题讨论】:

  • 完全不清楚您要使用此代码完成什么,并且其中有很多错误。正如 Jacob 所概述的那样,错误是因为您调用 fs.writeFile() 时没有将路径作为第一个参数传递。但是,不知道您实际上想用这段代码完成什么,我们真的不能说更多。此外,changeToTruechangeToFalse 变量完全没有意义。您在基本上已经是 JSON 的东西上调用 JSON.stringify()。没有意义。

标签: javascript node.js json discord.js fs


【解决方案1】:

以下是解决您遇到的错误的方法。您会注意到它是在您致电writeFile 时。如果您查看writeFile docs,第一个参数应该是文件路径。您为此传递了maintenancefile,其定义为:

const maintenancefile = require("../util/maintenance.json");

这就是为什么它说path 参数不是它所期望的字符串(文件路径)而是其他东西。

如果您的意图是覆盖该文件,而不是解析 JSON,那么您可以使用 require.resolve('../util/maintenance.json'),它将为您提供文件路径,而不是文件的解析内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多