首页 > 解决方案 > 相对路径与脚本所在的位置无关?卢阿

问题描述

假设我的计算机上有以下结构:

directory 
    a.lua
    subdirectory
        b.lua

这个 Lua 代码:

-- a.lua
foo = "bar"

-- b.lua
dofile("../a.lua")
print(foo)

如果我现在lua b.lua从目录运行,则相对路径"../a.lua"是相对于目录的,解释器会抱怨 b.lua 不存在。如果我从子目录中运行相同的命令,那么相对路径"../a.lua"是相对于子目录的,所以它可以工作。

我的问题:为什么相对路径是相对于我们执行脚本的位置,以及如何使它们相对于脚本所在的位置,例如在 CJS 中require

标签: moduleluapath

解决方案


此代码(需要 Lua 5.2+)适用于任何目录

-- b.lua
local path = (({...})[2] or arg[0]):gsub("[^/]*$", "")
dofile(path.."../a.lua")
print(foo)

推荐阅读