2016-07-28 8 views
2

donc j'ai le code suivant, et le problème est que lorsque je boucle chaque fichier dans mon tableau et essaie d'exiger le chemin du fichier, il me donne un erreur du module est introuvable.Comment faire require() prendre un chemin direct vers un fichier

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

La fonction récursive fonctionne, et les fichiers sont juste des chaînes du chemin. Mais après la recherche, require() nécessite un chemin relatif, pas un chemin direct. Donc je pense que je dois faire quelque chose avec fs pour faire du chemin du fichier un chemin relatif à la place? Je n'ai pas trouvé la réponse nulle part.

Merci!

Répondre

5

require ne prend aucun chemin. Les chargeurs standard utilisent simplement la chaîne que vous lui donnez dans une séquence de motifs, en accord avec son algorithme.

Ce que vous voulez, c'est charger et exécuter un script Lua donné sur le disque. Ce n'est pas orthographié require; c'est épelé dofile.