没有不值得去解决的问题,也没有不值得去学习的技术!

OpenResty on Windows 10 Errors: module ‘lib.redis’ not found: no field package.preload[‘lib.redis’]

Check the Nginx log file, morefunresty.dev.chinamcloud.cn.error.log, module 'lib.redis' not found:no field package.preload['lib.redis'].

1. Run the lua program, and it throws an error: 500 Internal Server Error openresty/1.19.9.1. As shown in Figure 1

Run the lua program, and it throws an error: 500 Internal Server Error openresty/1.19.9.1
Figure 1

2. Check the Nginx log file, morefunresty.dev.chinamcloud.cn.error.log, module ‘lib.redis’ not found: no field package.preload[‘lib.redis’]. As shown in Figure 2

Check the Nginx log file, morefunresty.dev.chinamcloud.cn.error.log, module 'lib.redis' not found:no field package.preload['lib.redis'].
Figure 2
Plaintext

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. Edit the Nginx file to add lua_package_path to configure the file search path for openresty

Nginx

# 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. After restarting the Nginx server, the same error still occurs. Checking the Nginx log reveals a new line: no file ‘E:/wwwroot/msi_main/resty/app/common/lib/lib\redis.lua’, confirming that ?.lua was replaced with lib\redis.lua, automatically adding an extra directory level: /lib

Plaintext

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. Edit the Nginx file to add lua_package_path to configure the file search path for openresty, and remove: /lib

Nginx

# 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. Run the lua program, and it no longer throws an error. As shown in Figure 3

Run the lua program, and it no longer throws an error.
Figure 3

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系