2016-07-28 6 views
2

, так что у меня есть следующий код, и проблема в том, что когда я просматриваю каждый файл в моем массиве и пытаюсь потребовать путь к файлу, он дает мне ошибка модуля не найдена.Как мне сделать require() принять прямой путь к файлу

local Commands = {} 

function getCommands() 
    local readdir = fs.readdir 
    local readdirRecursive = require('luvit-walk').readdirRecursive 
    readdirRecursive('./Desktop/Discord/ArtifexBot/Discordia/resources/commands/', function(k, files) 
     for i,v in pairs(files) do 
      if v:match(".lua") and not v:match("commands.lua") then 
       local cmd = v:match("([^/]-)%..-$") 
       fs.readlink(v,function(err,thing) 
        print(err,thing) 
       end) 
       Commands[cmd] = require(v) 
      end 
     end 
    end) 
end 
getCommands() 

Рекурсивная функция работает, и файлы являются просто строками пути. Но после исследования require() требует относительного пути, а не прямого пути. Итак, я думаю, что мне нужно что-то сделать с помощью fs, чтобы вместо этого сделать путь к файлу относительным путем? Я не мог найти ответ нигде.

Спасибо!

ответ

5

require не имеет никакого отношения к пути. Стандартные загрузчики просто используют строку, которую вы даете ей в последовательности шаблонов, в соответствии с ее алгоритмом.

Что вы хотите загрузить и выполнить данный сценарий Lua на диске. Это не указано require; это указано dofile.