如何在Lua中使用require访问Luvit';s内置模块?

如何在Lua中使用require访问Luvit';s内置模块?,lua,require,luvit,Lua,Require,Luvit,我正在Ubuntu 16.04服务器VPS上运行Luvit环境,该服务器用于托管我的项目。这是我当前文件树的图像 我目前(通过cd命令)在WrapperTest文件夹中,运行main.lua文件。这需要net/socket中的服务器文件 每次我切换文件时,感觉Lua都在更改文件路径。在这个项目中,联网是一项必须的工作,我的文件甚至检测不到内置模块 Luvit提供了许多内置模块,例如coro-http,它为Lua提供了http支持 为什么当我需要一个不同的文件时,我无法检测到正常的模块,并且我的

我正在Ubuntu 16.04服务器VPS上运行Luvit环境,该服务器用于托管我的项目。这是我当前文件树的图像

我目前(通过cd命令)在WrapperTest文件夹中,运行main.lua文件。这需要net/socket中的服务器文件

每次我切换文件时,感觉Lua都在更改文件路径。在这个项目中,联网是一项必须的工作,我的文件甚至检测不到内置模块

Luvit提供了许多内置模块,例如
coro-http
,它为Lua提供了http支持

为什么当我需要一个不同的文件时,我无法检测到正常的模块,并且我的整个文件路径发生了变化

编辑:当我
在WrapperTest中需要'main'
时,它成功地
需要
WrapperTest/net/socket/server
。此服务器文件依赖于
WrapperTest/net/
中的“discordio.lua”discordio.lua'需要一个名为
httplib
的目录中的文件,路径为
require“net/httplib”
。在http库的第一行,它需要一个名为
coro-http
的模块,该模块内置于Luvit的解释器中。这失败了,我不明白为什么

堆栈跟踪(非官方,因为这是Luvit错误,不是纯Lua):

是Luvit提供的“内置”库,镜像在节点中找到的库

是一个辅助库,可使用Luvit软件包管理器从公共软件包存储库安装

$ lit install creationix/coro-http
该命令将下载库并将其安装到名为
deps
的本地目录中

Luvit提供了一个定制,在其搜索模式中应该包括
deps
(以及递归升序的
deps
目录)


如果所有其他操作都失败,您可以尝试通过更改字段手动调整搜索路径:


为了帮助减少模糊性和更好地说明问题,你能给问题添加一个简单的例子吗?例如,当您
要求“xyz”
时,它无法
要求“不同的路径。一些模块”
之后,或者类似的东西。同时添加错误消息/stacktrace。Done@greatwolfLua不允许您使用相对模块路径。是的,很不方便。最简单的解决方法是将所有模块放在“全局模块文件夹”中,并要求它们指定从该文件夹开始的路径。您看到这个答案了吗?也许对你有帮助。另请注意,使用
而不是
/
@EgorSkriptunoff会出现Luvit自己的滚动,文档中显示为支持相对路径。感谢您提供唯一的答案。不幸的是,它真的不起作用。我尝试安装coro http模块,它将许多文件保存到我的包装文件夹中的deps目录中。然后我尝试了require,然后返回了另一个require错误,即coro-http无法识别其依赖项,因为我将包含所有内容的deps文件夹移到了其他位置。最重要的是,我的整个项目开始返回
require
错误,结果我实际上即将结束我的项目,并将近2000行代码扔进垃圾桶。我只是对lua(或luvit?)无法实现实际的文件路径系统感到愤怒。这是我在一段时间内完成的唯一一个主要项目,仅仅因为require函数正在运行而在一瞬间失去它是非常令人讨厌的。这也让我对lua的文件管理系统失去了几乎所有的信心,因为这是完全难以置信的——为什么不要求用普通的东西打开普通文件夹呢Lua的
require
具有非常简单的语义,因为底层的ansic代码对文件系统的概念非常有限。请查看中的
require
package.path
package.loaders
。我不清楚Luvit是如何修改或没有修改此行为的,但如果您很好地了解这三件事是如何协同工作的,您应该能够在运行时根据需要进行调整。我明白了,无论如何,谢谢您的帮助。我现在将尝试重新格式化我的项目,并将您的答案标记为正确,因为它确实提供了比注释更多的帮助:p
$ lit install creationix/coro-http
package.path = './deps/?.lua;' .. package.path