找不到模块插槽

西瓦·库玛(Siva Kumar)

我正在尝试使用lua从nginx访问redis值。当我在命令行上执行lua文件时,一切正常,我能够读取和写入Redis值。但是我尝试通过访问在其中写入access_by_lua指令的位置从nginx执行相同文件时,在错误日志文件中记录了以下错误

no field package.preload['socket'] 
no file '/home/sivag/redis/redis-lua/src/socket.lua'
no file 'src/socket.lua'
no file '/home/sivag/lua/socket.lua'
no file '/opt/openresty/lualib/socket.so'
no file './socket.so'
no file '/usr/local/lib/lua/5.1/socket.so'
no file '/opt/openresty/luajit/lib/lua/5.1/socket.so'
no file '/usr/local/lib/lua/5.1/loadall.so'

这是什么原因,我该如何解决?

小猪

您会收到此错误,因为您的代码执行了该命令。require("socket")此命令将在几个目录中搜索具有该名称的文件。如果成功,内容将作为Lua代码执行。如果不成功,您将收到错误消息。

为了解决此问题,您必须将包含文件的路径添加到系统变量LUA_PATH,或者必须将其添加到全局表,因为package.path您需要该文件。卢阿会取代吗?使用您给require()命名的名称

例如

package.path = package.path .. ";" .. thisPathContainsTheLuaFile .. "?.lua"

请阅读:

http://www.lua.org/manual/5.3/manual.html#pdf-require

https://www.lua.org/pil/8.1.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章