【问题标题】:Node attempting to read file before synchronous write finishes节点尝试在同步写入完成之前读取文件
【发布时间】:2016-07-25 19:34:38
【问题描述】:

我正在尝试让我的程序尝试读取配置文件,如果配置文件不存在,程序将从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
}

【问题讨论】:

  • 听起来你需要做一些回调。我不确定,但我对正确答案很感兴趣=P

标签: javascript node.js fs


【解决方案1】:

这是因为缓存与 require 一起工作的方式。因为第一个失败了,所以第二个也会失败,直到事件循环清除。试试这种方式。

if (fs.existsSync('/config.js')) {
    config = require('./config');
} else {
    fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
    config = require('./config');
}

【讨论】:

  • 这修复了它。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
相关资源
最近更新 更多