如何使require()获取文件的直接路径

时间:2016-07-28 15:00:13

标签: lua luvit

所以我有以下代码,问题是当我遍历我的数组中的每个文件并尝试要求文件路径时,它会给我一个错误的模块找不到。

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做一些事情来使文件路径成为相对路径?我无法在任何地方找到答案。

谢谢!

1 个答案:

答案 0 :(得分:5)

require根本没有路径。标准加载器根据其算法简单地使用您按照一系列模式给出的字符串。

您想要的是在磁盘上加载和执行给定的Lua脚本。这不是拼写require;这拼写为dofile