我正在尝试使我的程序尝试读取配置文件,如果配置文件不存在,程序将从config.example.js
生成新的配置文件,然后需要新的生成的文件。但是,我遇到了一个问题 - 即使使用fs.writeFileSync()
,在“同步”写入完成之前,Node似乎正在运行config = require('config.js');
,因为它与Cannot find module './config.js'
崩溃。
以下是相关代码:
var config;
//Create new config file if one not found
try {
config = require('./config.js');
} catch (e){
fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
console.log("New config file config.js created");
config = require('./config.js'); //Line it crashes on
}
答案 0 :(得分:1)
这是因为缓存使用require的方式。因为第一个失败,第二个失败,直到事件循环清除。试试这种方式。
if (fs.existsSync('/config.js')) {
config = require('./config');
} else {
fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
config = require('./config');
}