Node.js要求本地文件抛出错误

时间:2020-08-16 04:33:45

标签: javascript node.js discord.js

这是我项目的文件系统。

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()时,它可以工作。有什么问题吗?

1 个答案:

答案 0 :(得分:1)

如果没有路径或文件名上存在相对路径,则

fs.readFile()默认为当前工作目录。

require()对于查找文件的位置具有一组完全独立的规则。例如,根本没有路径的文件名会在node_modules目录和全局模块位置中出现。以./开头的文件名会出现在当前模块的主目录中。依此类推...这是一组与fs.readFile()不同的规则。

由于您没有向我们展示file的实际含义,因此很难准确知道,但是也许您需要将文件名与适当的路径结合起来,以便为require()提供完整的路径名而且它会准确地到达那里,在仅给出纯文件名的情况下,require()的外观不会使用常规规则。