module - 相对路径与脚本所在的位置无关?卢阿
问题描述
假设我的计算机上有以下结构:
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
?
解决方案
此代码(需要 Lua 5.2+)适用于任何目录
-- b.lua
local path = (({...})[2] or arg[0]):gsub("[^/]*$", "")
dofile(path.."../a.lua")
print(foo)
推荐阅读
- javascript - Hot Module Replacement '[HMR] Waiting for update signal from WDS...',如何启用 Hot Module Replacement?
- javascript - Javascript拼接与redux一起工作错误
- reactjs - 反应问题。始终检查星级输入
- c++ - 如何将带有特殊字符的 QString 转换为字节流以通过 Linux 管道发送
- mariadb - 多个用户同时访问同一个 Mariadb 数据库
- php - 我网站上的 PHP 计数器坏了
- javascript - 在桌面使用 chrome 移动视图和在移动设备中使用 chrome 的区别
- pine-script - 尝试编写代码,在进行下一次交易之前为策略提供缓冲时间,声明问题
- php - 在 json 数组中搜索函数 SQL
- assembly - 在 x86 程序集中的代码段内定义数据