节点尝试在同步写入完成之前读取文件
Node attempting to read file before synchronous write finishes
我正在尝试使我的程序尝试读取配置文件,如果配置文件不存在,程序将从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
}
这是因为缓存处理require的方式。因为第一个失败了,所以第二个也会失败,直到事件循环清除为止。不如这样试试。
if (fs.existsSync('/config.js')) {
config = require('./config');
} else {
fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example'));
config = require('./config');
}
相关文章:
- 使用JS/NodeJS测试并读取文件中的变量
- 当读取文件时,浏览器打开良好,但它是空白浏览器
- 当尝试使用ajax读取文件时,变量返回undefined
- 用一些像jsBin/jsFiddle/codePen这样的工具读取文件
- 在Windows Metro风格的Javascript应用程序中读取文件内容
- 咕噜声.js无法读取文件(错误代码:EISDIR)
- 如何从文件夹中读取文件
- Javascript - 如何读取文件
- 如何从 Duktape 中运行的 JavaScript 代码中读取文件
- 当客户端是服务器时,使用 client-JS 读取文件结构
- 如何从chrome扩展名读取文件
- 为什么“;readFile”;使用比读取文件更多的内存's的内容长度
- 在html中读取文件
- 使用javascript读取文件
- 节点尝试在同步写入完成之前读取文件
- 无法通过FileReader读取文件
- 从php中的本地磁盘读取文件
- 使用Javascript读取文件
- 是否可以使用 javascript 从目录中读取文件
- 通过网络浏览器从 URL javascript 读取文件