Node.js не может найти файл в другой папке - PullRequest
3 голосов
/ 24 октября 2019

У меня есть бот Discord, который я поддерживаю уже год, и пару месяцев назад я немного изменил структуру файла, чтобы очистить его и упростить мне понимание того, что происходит.

Дело в том, что всякий раз, когда я пытаюсь запросить файл (с require), который находится в папке, расположенной в корневом каталоге бота, иногда он работает с "./", а иногда - с "../"

Текущая структура файла:

----commands  
-------commands.js(multiple files)  
----images  
-------halloween  
----------images.png/jpg(multiple images)  
----logs  
-------bot.log  
----modules  
------logger.js  
----settings  
-------config.json  
-emojis.json  
-gifs.json  
-index.js

Следуя приведенной выше структуре, когда, например, я пытаюсь запросить одно из изображений Хэллоуина в команде, логичным для меня было быиспользуйте «../images/halloween/image.png», но вместо этого я должен использовать «./images/halloween/image.png», как если бы папка «images» находилась в папке «команд»

В одной из команд, которые я должен использовать:

const logs = require("../modules/logger");  
const background = await Canvas.loadImage("./images/halloween/background.jpg");

Я хотел бы знать, почему это происходит. Это действительно мешает моему мозгу увидеть ошибку, говорящую, что файл не был найден только потому, что node.js решил, что на этот раз родительский каталог "./" вместо "../"

1 Ответ

1 голос
/ 24 октября 2019

Если ваш командный файл выполняет вызовы файловой системы (потому что вы обращаетесь к изображению с него), каталог, из которого вы вызываете свой скрипт, может иметь значение. Убедитесь, что вы используете утилиту path для определения местоположения файлов. См. NodeJS доступ к файлу с относительным путем для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...