是否可以在同一个文件中多次使用“require”?

时间:2021-03-13 11:38:01

标签: typescript require

我想知道是否可以在同一文件中动态使用 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? 红了,但这不是我想要的:我想在 相同 文件中要求两次。

1 个答案:

答案 0 :(得分:1)

为什么第二个要求不崩溃?

这是因为每个都需要 caches 加载的文件。在需要更新的文件之前,您必须删除缓存。这可以通过 delete operator 完成,因为缓存是一个简单的对象 delete require.cache[require.resolve('/path/to/my/file')]

我不认为那是个好主意。你为什么不使用 fs.readFile 呢?

相关问题