如何使 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 的交互,使文件路径变成一个相对路径?我在任何地方都找不到答案。

谢谢!

点赞
用户734069
用户734069

require在输入路径时不知道路径是否正确。标准加载器只是使用你提供的字符串在一系列模式中按照算法匹配。

你想要的是加载并执行磁盘上给定的Lua脚本。这不应使用 require,而是应该使用 dofile

2016-07-28 15:06:47