1、运行 lua 程序,报错:500 Internal Server Error openresty/1.19.9.1。如图1
2、查看 Nginx 日志文件,morefunresty.dev.chinamcloud.cn.error.log,module ‘lib.redis’ not found: no field package.preload[‘lib.redis’]。如图2
2021/09/22 17:13:14 [error] 39648#39764: *272 lua entry thread aborted: runtime error: E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: module 'lib.redis' not found: no field package.preload['lib.redis'] no file './site/lualib/lib/redis.ljbc' no file './site/lualib/lib/redis/init.ljbc' no file './lualib/lib/redis.ljbc' no file './lualib/lib/redis/init.ljbc' no file './site/lualib/lib/redis.lua' no file './site/lualib/lib/redis/init.lua' no file './lualib/lib/redis.lua' no file './lualib/lib/redis/init.lua' no file './lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis/init.lua' no file './site/lualib/lib/redis.so' no file './lualib/lib/redis.so' no file './lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.so' no file 'C:/openresty-1.19.9.1-win64/lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' no file './site/lualib/lib.so' no file './lualib/lib.so' no file './lib.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib.so' no file 'C:/openresty-1.19.9.1-win64/lib.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' stack traceback: coroutine 0: [C]: in function 'require' E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: in main chunk, client: 127.0.0.1, server: morefunresty.dev.chinamcloud.cn, request: "GET /lua/api/draw/prizes?act_id=a0535444-283c-481e-9bcd-b0673a28f3ca HTTP/1.1", host: "morefunresty.dev.chinamcloud.cn" 2021/09/22 17:13:16 [error] 39648#39764: *273 lua entry thread aborted: runtime error: E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: module 'lib.redis' not found: no field package.preload['lib.redis'] no file './site/lualib/lib/redis.ljbc' no file './site/lualib/lib/redis/init.ljbc' no file './lualib/lib/redis.ljbc' no file './lualib/lib/redis/init.ljbc' no file './site/lualib/lib/redis.lua' no file './site/lualib/lib/redis/init.lua' no file './lualib/lib/redis.lua' no file './lualib/lib/redis/init.lua' no file './lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis/init.lua' no file './site/lualib/lib/redis.so' no file './lualib/lib/redis.so' no file './lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.so' no file 'C:/openresty-1.19.9.1-win64/lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' no file './site/lualib/lib.so' no file './lualib/lib.so' no file './lib.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib.so' no file 'C:/openresty-1.19.9.1-win64/lib.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' stack traceback: coroutine 0: [C]: in function 'require' E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: in main chunk, client: 127.0.0.1, server: morefunresty.dev.chinamcloud.cn, request: "GET /lua/api/draw/prizes?act_id=a0535444-283c-481e-9bcd-b0673a28f3ca HTTP/1.1", host: "morefunresty.dev.chinamcloud.cn"
3、编辑 Nginx 文件,添加 lua_package_path,以配置 openresty 的文件寻址路径
# set search paths for pure Lua external libraries (';;' is the default path): lua_package_path 'E:/wwwroot/msi_main/resty/app/common/lib/?.lua;;'; server { }
4、重启 Nginx 服务器后,仍然报同样的错误。查看 Nginx 日志,新增一行:no file ‘E:/wwwroot/msi_main/resty/app/common/lib/lib/redis.lua’,确认 ?.lua 被替换为:lib/redis.lua,自动增加了一级目录:/lib
2021/09/22 18:47:41 [error] 42716#42404: *304 lua entry thread aborted: runtime error: E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: module 'lib.redis' not found: no field package.preload['lib.redis'] no file 'E:/wwwroot/msi_main/resty/app/common/lib/lib/redis.lua' no file './site/lualib/lib/redis.ljbc' no file './site/lualib/lib/redis/init.ljbc' no file './lualib/lib/redis.ljbc' no file './lualib/lib/redis/init.ljbc' no file './site/lualib/lib/redis.lua' no file './site/lualib/lib/redis/init.lua' no file './lualib/lib/redis.lua' no file './lualib/lib/redis/init.lua' no file './lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis.lua' no file 'C:/openresty-1.19.9.1-win64/lua/lib/redis/init.lua' no file './site/lualib/lib/redis.so' no file './lualib/lib/redis.so' no file './lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib/redis.so' no file 'C:/openresty-1.19.9.1-win64/lib/redis.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' no file './site/lualib/lib.so' no file './lualib/lib.so' no file './lib.dll' no file 'C:/openresty-1.19.9.1-win64/lualib/lib.so' no file 'C:/openresty-1.19.9.1-win64/lib.dll' no file 'C:/openresty-1.19.9.1-win64/loadall.dll' stack traceback: coroutine 0: [C]: in function 'require' E:/wwwroot/msi_main/resty/app/mods/draw/prizes.lua:10: in main chunk, client: 127.0.0.1, server: morefunresty.dev.chinamcloud.cn, request: "GET /lua/api/draw/prizes?act_id=a0535444-283c-481e-9bcd-b0673a28f3ca HTTP/1.1", host: "morefunresty.dev.chinamcloud.cn"
5、编辑 Nginx 文件,添加 lua_package_path,以配置 openresty 的文件寻址路径,删除:/lib
# set search paths for pure Lua external libraries (';;' is the default path): lua_package_path 'E:/wwwroot/msi_main/resty/app/common/?.lua;;'; server { }
6、运行 lua 程序,不再报错。如图3
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/250618.html