有没有更好的方法来要求来自 lua 中相对路径的文件
Posted
技术标签:
【中文标题】有没有更好的方法来要求来自 lua 中相对路径的文件【英文标题】:Is there a better way to require file from relative path in lua 【发布时间】:2011-08-11 07:11:16 【问题描述】:我的目录结构如下:
|-- ball.lua
|-- entity.lua
|-- test
`-- ball_test.lua
我在 test/ball_test.lua 中使用以下代码来要求父目录中的 ball.lua:
package.path = package.path .. ";../entity.lua"
require("entity")
package.path = package.path .. ";../ball.lua"
require("ball")
entity.lua 是 ball.lua 的依赖项。所以我首先需要(“实体”),否则我得到一个模块'entity.lua'未找到错误。这似乎是一个 hack,有什么更好的方法来做到这一点?
【问题讨论】:
有ball模块需要entity.lua,所以你只需要require'ball' @Lukasz - 球确实需要 entity.lua。我收到错误是因为 require 从 test 子目录执行时找不到 entity.lua。抱歉,我的问题没有说清楚。 【参考方案1】:package.path = package.path .. ";../?.lua"
两者都适用。
【讨论】:
我会将其切换为package.path = ";../?.lua" .. package.path
,这样我就不会有未知模块击败本地模块。
我猜你的意思是package.path = "../?.lua;" .. package.path
(应该移动路径分隔符)。否则,好主意。
+1 对于任何寻找如何为 C 扩展模块执行此操作的人,您需要修改 package.cpath
而不是 package.path
;否则就差不多了
如果你使用 nginx LUA 模块,这是个坏主意。 package.path 是全局的。每个请求,此代码都会执行并无限连接。最后,它会爆炸。我对这段代码的 PROD 体验很差。请改用 lua_package_path。也阅读这篇文章medium.com/@fabricebaumann/…lua_package_path ";;/your/folder/lua/?.lua" ; ;; 是指向你的默认包 lua 目录的符号链接。不要删除它。以上是关于有没有更好的方法来要求来自 lua 中相对路径的文件的主要内容,如果未能解决你的问题,请参考以下文章