Ошибка: ENOENT, нет такого файла или каталога 'undefined'
Пожалуйста помоги! Я везде искал решение, в том числе задавал вопросы на официальных форумах Moralis, и до сих пор никто не смог дать мне решение. Я занимаюсь этим уже 3 дня и все еще на том же месте. Скажем так, я потратил так много времени на изучение этого кода, что я начинаю понимать его, и я даже не программист ... До сих пор я видел, что у других людей была похожая ошибка "ENOENT", но за ними следует определенный файл, который отсутствует или что-то в этом роде. Моя проблема, однако, просто говорит «Не определено» и не говорит мне, что такое неопределенное, или как я должен это определять. Насколько мне известно, я нахожусь в корневой папке, я установил все зависимости, выполнил "npm install", установил "canvas", сделал "npm init ", очистил кеш, удалил холст, переустановил холст, удалил папку" node_modules ", удалил npm, а затем повторно установил npm. Независимо от того, что я продолжаю получать ту же ошибку.
Чтобы добавить некоторого контекста, это исходное обучающее видео, которое я просмотрел прямо со страницы Moralis на YouTube.
Сгенерируйте NFT с помощью этого простого кода (это может принести вам миллионы) ЧАСТЬ 1
Это официальный код костяного инвентаря с их GitHub, и я изменил только несколько строк, которые он говорит об изменении в видео и на GitHub, на свои собственные ссылки. Вот ссылка на GitHub
Коллекция Moralis Mutants NFT | Генеративный Art Engine
Вот результат, который я получаю, когда запускаю "node index.js"
2 ответа
Во время отладки с вами я помещаю это в ответ только потому, что мне нужно сообщить несколько строк кода, которые на самом деле не работают в комментарии.
Похоже, проблема возникает в этой последовательности кода в https://github.com/ashbeech/moralis-mutants-nft-engine/blob/main/index.js:
// propagate information about required layer contained within config into a mapping object
// = prepare for drawing
let results = constructLayerToDna(newDna, layers, rarity);
let loadedElements = [];
// load all images to be used by canvas
results.forEach((layer) => {
loadedElements.push(loadLayerImg(layer));
});
Когда он звонит
loadLayerImg(layer)
, похоже, что слой неисправен и не содержит некоторых свойств, которые он должен.
layer
исходит от которого исходит от призыва к
constructLayerToDna()
который, согласно комментарию, читает информацию из вашего конфига. Таким образом, кажется, что что-то отсутствует или неверно в конфигурации, что вызывает неисправность
results
множество.
Я нашел виновного! Итак, что происходило, так это то, что в одной из моих папок слоя для «Base_head» у меня было 5 папок для 5 различных уровней редкости, однако у меня было только 2 варианта базовой головы, поэтому у меня было изображение в «обычном», изображение в «легендарном». ” и оставил остальные 3 папки редкости пустыми для слоя “Base_head”, так как у меня не было других базовых головок. Я думал, что не имеет значения, если папка для определенной редкости слоя пуста. Поэтому я проверил, не является ли это проблемой, заполнив остальные 3 папки редкости одним и тем же изображением для «обычной» редкости «базовая голова» -> таким образом редкости «обычный, необычный, редкий и супер_редкий» получили одно и то же изображение и затем я сохранил 2-й образ в папке легендарной редкости. Это, кажется, исправить это. Я пробовал несколько разных вещей, пытался снизить разрешение моих изображений, думая, что, может быть, это
Короче говоря, если у вас есть папки слоев с разными папками редкости в каждой из них, вам нужно убедиться, что у вас есть хотя бы одно изображение в каждой папке. Вы не можете оставить какую-либо папку пустой, иначе она не запустится из-за невозможности найти изображение в указанной папке.
Это на самом деле совпадает с тем, что вы указали @jfriend00. Вы упомянули, что «когда он вызывает loadLayerImg(слой), кажется, что слой неисправен и не содержит некоторых свойств, которые он должен».
Ну, если папка слоя пуста или папка редкости в папке слоя пуста, то программа сделает вывод, что «слой не содержит некоторых свойств», то есть изображение, лол. Потратил на это несколько дней, и в итоге оказалось, что это простое исправление, которое было трудно найти. Спасибо всем, надеюсь, это поможет людям в будущем!