#javascript #node.js #discord.js
#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
Но это выдает ошибку referenceerror, что модуль не может быть найден. Но когда я пытаюсь fs.ReadFile(), это работает. В чем проблема?
Комментарии:
1. Пожалуйста, замените
${file}
на пример имени файла.
Ответ №1:
fs.readFile()
по умолчанию используется текущий рабочий каталог, если путь отсутствует или если в имени файла указан относительный путь.
require()
имеет совершенно отдельный набор правил для того, где он ищет файлы. Например, имя файла, к которому вообще нет пути, просматривается в node_modules
каталоге и в расположении глобальных модулей. Имя файла, начинающееся с ./
, просматривается в домашнем каталоге текущего модуля. И так далее… Это другой набор правил, чем fs.readFile()
.
Поскольку вы не показываете нам, что file
есть на самом деле, трудно точно определить, но, возможно, вам нужно объединить имя файла с соответствующим путем, чтобы вы указывали require()
полное имя пути, и оно попадет именно туда, а не использовать обычные правила для того, где require()
выглядит, когда задано только простое имя файла.
Комментарии:
1. Спасибо! Я изменил код, как вы сказали, и это работает!