节点尝试在同步写入完成之前读取文件
Node attempting to read file before synchronous write finishes
我试图让我的程序尝试读取配置文件,如果配置文件不存在,程序将从 config.example.js
生成一个新的配置文件,然后要求新生成的文件。但是,我 运行 遇到了一个问题 - 即使使用 fs.writeFileSync()
,Node 在 "synchronous" 写入完成之前似乎是 运行 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
}
这是因为缓存与 require 一起工作的方式。因为第一个失败,所以第二个也会失败,直到事件循环清除。改用这种方式试试。
if (fs.existsSync('/config.js')) {
config = require('./config');
} else {
fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
config = require('./config');
}
我试图让我的程序尝试读取配置文件,如果配置文件不存在,程序将从 config.example.js
生成一个新的配置文件,然后要求新生成的文件。但是,我 运行 遇到了一个问题 - 即使使用 fs.writeFileSync()
,Node 在 "synchronous" 写入完成之前似乎是 运行 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
}
这是因为缓存与 require 一起工作的方式。因为第一个失败,所以第二个也会失败,直到事件循环清除。改用这种方式试试。
if (fs.existsSync('/config.js')) {
config = require('./config');
} else {
fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
config = require('./config');
}