这是我项目的文件系统。
root
index.js
package.json
...etc
commamds
- ping.js
- eval.js
- ...etc
这是一个普通的discord.js机器人。 但是,当我尝试重新加载命令时,我使用以下代码:
...etc
let pull = require(`./${file}`);
// file is command files from fs.readdirSync() and it can be 'ping.js', 'eval.js', ...
...etc
但是它引发了一个参考错误,即找不到该模块。但是当我尝试fs.readFile()时,它可以工作。有什么问题吗?
答案 0 :(得分:1)
fs.readFile()
默认为当前工作目录。
require()
对于查找文件的位置具有一组完全独立的规则。例如,根本没有路径的文件名会在node_modules
目录和全局模块位置中出现。以./
开头的文件名会出现在当前模块的主目录中。依此类推...这是一组与fs.readFile()
不同的规则。
由于您没有向我们展示file
的实际含义,因此很难准确知道,但是也许您需要将文件名与适当的路径结合起来,以便为require()
提供完整的路径名而且它会准确地到达那里,在仅给出纯文件名的情况下,require()
的外观不会使用常规规则。