我想检查JSON文件是否存在,然后需要它,如果没有,则创建它。这已经完成了,但是当在代码中使用jsonfile时,我得到`ReferenceError:config未定义
代码:
const cleverbot = require("cleverbot.io"),
clever = new cleverbot(config.cleverbotUser, config.cleverBotToken);
fs.readFile("config.json", (err, data) => {
if (err) {
console.log("Config file doesnot exist, creationg one.");
//Default config values
let obj = {
cleverbotUser: "TOKEN",
cleverBotToken: "TOKEN"
};
jsonfile.spaces = 4;
jsonfile.writeFile("config.json", obj, (err) => {
console.log(err)
})
} else {
global.config = require("./config.json");
}
});
如何在使用之前检查JSON文件是否存在,而不会导致错误?
答案 0 :(得分:1)
配置未定义是关于第二行使用的配置对象
clever = new cleverbot(config.cleverbotUser, config.cleverBotToken);
肯定没有定义,你可能忘了要求它。
答案 1 :(得分:0)
我相信你应该先定义你的配置变量。它可以为空或填充一些默认数据。
const config = {
cleverbotUser: "",
cleverBotToken: ""
}
然后尝试从文件加载值,最后初始化cleverbot
对象。此方法的唯一条件是您的类可以使用这些参数运行,否则您应该使用try catch
块并抛出异常。
答案 2 :(得分:-1)
你可以使用try catch。
try
{
const cleverbot = require("cleverbot.io"),
clever = new cleverbot(config.cleverbotUser, config.cleverBotToken);
require('fs').exists("config.json", function(exists) {
if (exists) {
fs.readFile("config.json", (err, data) => {
if (err) {
console.log("Config file doesnot exist, creationg one.");
//Default config values
let obj = {
cleverbotUser: "TOKEN",
cleverBotToken: "TOKEN"
};
jsonfile.spaces = 4;
jsonfile.writeFile("config.json", obj, (err) => {
console.log(err)
})
} else {
global.config = require("./config.json");
}
});
}
});
}
catch (e) {
if (e instanceof Error && e.code === "MODULE_NOT_FOUND")
console.log("Can't load foo!");
else
throw e;
}
try catch将处理加载模块中的错误,文件存在将处理json文件以查看是否找到它。