我想知道是否可以在同一个文件中require
即时使用两次。
在第一次和第二次之间,我的导入文件被更新了,我想读取更新文件的内容。
为了简化问题,我将简单地删除两者之间的文件require
而不是更新它。
fs.removeSync(/path/to/my/file);
const final = require(/path/to/my/file);
// => crash : cannot find module
崩溃是正常的(我删除了文件)。
现在,如果我在删除文件之前需要该文件,则不会发生崩溃。
const initial = require(/path/to/my/file);
fs.removeSync(/path/to/my/file);
const final = require(/path/to/my/file);
// => No crash !!!
所以,我想这require
并没有真正被第二次调用,但我不确定。
我不知道如何第一次读取文件的内容,更新它,然后在同一个文件中再次读取它。
欢迎任何帮助!
PS:我把这篇文章红了可以多次 require() 同一个文件吗?,但这不是我想要的:我想在同一个文件中要求两次。
为什么第二个要求不会崩溃?
这是因为每个 require 都会缓存加载的文件。在需要更新的文件之前,您必须删除缓存。由于缓存是一个简单的对象,因此可以使用delete 运算符来完成delete require.cache[require.resolve('/path/to/my/file')]
。
我不认为那是一个好主意。你为什么不使用fs.readFile呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句