openresty无法使用require
不使·access_check.lua
的时候,程序运行正常,使用就会出现错误。
环境使用了docker
的openresty/openresty
官方镜像。
nginx.conf
配置如下:
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
lua_package_path "lua/?.lua;app/?.lua";
lua_code_cache off;
server {
listen 6699;
charset utf-8;
#lua_need_request_body on;
location / {
default_type text/html;
content_by_lua_block {
ngx.say("hello fatrbaby")
}
}
location ~ ^/api/([-_a-zA-Z0-9/]+) {
access_by_lua_file lua/access_check.lua;
content_by_lua_file lua/$1.lua;
}
}
}
access_check.lua
代码如下:
local validator = require("lib.validator")
local args = ngx.req.get_uri_args()
if not validator.is_number(args.a, args.b) then
ngx.exit(ngx.HTTP_BAD_REQUEST)
return
end
ngx.print(package.path)
错误日志如下:
2017/04/26 09:11:34 [error] 216#216: *1 lua entry thread aborted: runtime error: /usr/local/var/learn/lua/access_check.lua:1: module 'lib.validator' not found:
no field package.preload['lib.validator']
no file 'lua/lib/validator.lua'
no file 'app/lib/validator.lua'
no file '/usr/local/openresty/site/lualib/lib/validator.so'
no file '/usr/local/openresty/lualib/lib/validator.so'
no file './lib/validator.so'
no file '/usr/local/lib/lua/5.1/lib/validator.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/lib/validator.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file '/usr/local/openresty/site/lualib/lib.so'
no file '/usr/local/openresty/lualib/lib.so'
no file './lib.so'
no file '/usr/local/lib/lua/5.1/lib.so'
no file '/usr/local/openresty/luajit/lib/lua/5.1/lib.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
stack traceback:
coroutine 0:
[C]: in function 'require'
/usr/local/var/learn/lua/access_check.lua:1: in function </usr/local/var/learn/lua/access_check.lua:1>, client: 172.17.0.1, server: , request: "GET /api/add?a=1&b=6 HTTP/1.1", host: "localhost:6699"
项目目录结构如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已经解决了这个问题