【问题标题】:How do I make require() take a direct path to a file如何使 require() 采用文件的直接路径
【发布时间】:2016-07-28 15:00:13
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: lua luvit


    【解决方案1】:

    require 根本不走路径。标准加载器只是按照其算法以一系列模式使用您给它的字符串。

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

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 2017-03-25
      • 2023-04-05
      • 2015-09-13
      • 2017-02-23
      • 2015-02-24
      • 2018-07-03
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多