我有几个独立的脚本从相同的文本文件中读取和写入。我试图在模块读取/写入文本文件时锁定文本文件。目前我正在使用 lockfile 包,但它似乎没有工作。例如
//lock file before reading
lockFile.lockSync("./Config/presetString.txt.lock",10000,100,10000,1000,100)
//read file
var preset = fs.readFileSync("./Config/presetString.txt", 'utf8');
//unlock file
lockFile.unlockSync("./Config/presetString.txt.lock",10000,100,10000,1000,100)
但是,当许多模块正在运行时,它有时会抛出一个错误,使一切都停止。该错误表明 .lock 文件已存在。这似乎违反直觉 - 如果 .lock 文件已经存在,那么模块应该等到它不存在。使用上面的选项,模块应该重试访问锁 1000 次,但这似乎不起作用。
关于如何防止这种情况的任何想法?
这是一个抛出的示例错误:
Error: EEXIST: file already exists, open './Config/presetString.txt.lock'