2016-07-28 15 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です。