2016-07-28 1 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입니다.

관련 문제