我想知道是否可以在同一文件中动态使用 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
不会真的被第二次调用,但我不确定。
我不知道如何第一次读取文件的内容,更新它,然后在同一个文件中再次读取它。
欢迎任何帮助!
附注: 我将此帖子 Is it ok to require() the same file multiple times? 红了,但这不是我想要的:我想在 相同 文件中要求两次。
答案 0 :(得分:1)
为什么第二个要求不崩溃?
这是因为每个都需要 caches 加载的文件。在需要更新的文件之前,您必须删除缓存。这可以通过 delete operator 完成,因为缓存是一个简单的对象 delete require.cache[require.resolve('/path/to/my/file')]
。
我不认为那是个好主意。你为什么不使用 fs.readFile 呢?