使用 fs 将数据写入文件时遇到问题 (javascript)
Having trouble writing data to a file using fs (javascript)
我正在尝试根据其状态将单独 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)
提前致谢:)
以下是分解您遇到的错误的方法。当您调用 writeFile
时,您会注意到它。如果您查看 writeFile
docs,第一个参数应该是文件路径。您为此传递 maintenancefile
,定义为:
const maintenancefile = require("../util/maintenance.json");
这就是为什么它说 path
参数不是它期望的字符串(文件路径)而是其他东西。
如果您的目的是覆盖该文件,而不是解析 JSON,那么您可以使用 require.resolve('../util/maintenance.json')
,这将为您提供文件路径而不是文件的解析内容。
我正在尝试根据其状态将单独 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)
提前致谢:)
以下是分解您遇到的错误的方法。当您调用 writeFile
时,您会注意到它。如果您查看 writeFile
docs,第一个参数应该是文件路径。您为此传递 maintenancefile
,定义为:
const maintenancefile = require("../util/maintenance.json");
这就是为什么它说 path
参数不是它期望的字符串(文件路径)而是其他东西。
如果您的目的是覆盖该文件,而不是解析 JSON,那么您可以使用 require.resolve('../util/maintenance.json')
,这将为您提供文件路径而不是文件的解析内容。