openresty package.path require 报错

在文件中

复制代码
package.path = '/usr/local/share/lua/5.1/?.lua;/usr/local/openresty/lualib/resty/?.lua;'
package.cpath = '/usr/local/lib/lua/5.1/?.so;'

执行
local mysql = require "mysql" --正确
local mysql = require "resty.mysql" --报错

去掉
package.path = '/usr/local/share/lua/5.1/?.lua;/usr/local/openresty/lualib/resty/?.lua;' 
package.cpath = '/usr/local/lib/lua/5.1/?.so;'

local mysql = require "mysql" --报错
local mysql = require "resty.mysql" --正确


复制代码

package.path 的默认路径指向哪的呢?

去掉 package.path,在页面中 随便引用一个不存在的模块 比如 require 'aa'

查看nginx错误日志返回

复制代码
    no field package.preload['aa']
    no file '/usr/local/openresty/lualib/aa.lua'
    no file '/usr/local/openresty/lualib/aa/init.lua'
    no file './aa.lua'
    no file '/usr/local/openresty/luajit/share/luajit-2.1.0-alpha/aa.lua'
    no file '/usr/local/share/lua/5.1/aa.lua'
    no file '/usr/local/share/lua/5.1/aa/init.lua'
    no file '/usr/local/openresty/luajit/share/lua/5.1/aa.lua'
    no file '/usr/local/openresty/luajit/share/lua/5.1/aa/init.lua'
    no file '/usr/local/openresty/lualib/aa.so'
    no file './aa.so'
    no file '/usr/local/lib/lua/5.1/aa.so'
    no file '/usr/local/openresty/luajit/lib/lua/5.1/aa.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
复制代码

发现  /usr/local/openresty/lualib/aa.lua 难道默认的路径是 /usr/local/openresty/lualib 于是在页面中加入

package.path = '/usr/local/share/lua/5.1/?.lua;/usr/local/openresty/lualib/resty/?.lua;/usr/local/openresty/lualib/?.lua;'

package.cpath = '/usr/local/lib/lua/5.1/?.so;'

ngx.say(package.path)

执行正确

新手~~ 勿怪

 

posted @   wangxusummer  阅读(2589)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示