2016-07-28 12 views
2

so habe ich den folgenden Code, und das Problem ist, dass, wenn ich durch jede Datei in meinem Array durchlaufen und den Dateipfad erfordern, gibt es mir ein Fehler des Moduls wurde nicht gefunden.Wie mache ich require() nehmen Sie einen direkten Pfad zu einer Datei

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() 

Die rekursive Funktion funktioniert, und die Dateien sind nur Zeichenfolgen des Pfads. Nach der Forschung benötigt require() jedoch einen relativen Pfad, keinen direkten Pfad. Also ich denke, ich muss etwas mit fs tun, um den Dateipfad stattdessen einen relativen Pfad zu machen? Ich konnte die Antwort nirgendwo finden.

Danke!

Antwort

5

require nimmt überhaupt keinen Pfad. Die Standardlader verwenden einfach die Zeichenfolge, die Sie in einer Sequenz von Mustern angeben, in Übereinstimmung mit ihrem Algorithmus.

Was Sie wollen, ist ein bestimmtes Lua-Skript auf der Festplatte zu laden und auszuführen. Das ist nicht buchstabiert require; das ist buchstabiert dofile.