检查JSON文件是否存在,然后需要它

时间:2017-01-14 20:41:59

标签: javascript json node.js

我想检查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文件是否存在,而不会导致错误?

3 个答案:

答案 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文件以查看是否找到它。