2014-12-09 83 views
1

我正在使用Nginx + Lua。我有一个Lua模块,我试图从Nginx访问,我确实遇到了一些错误。在Nginx中使用Lua模块

下面是我的Lua模块。

local _M = {} 

function Set (list) 
    local set = {} 
    for _, l in ipairs(list) do set[l] = true end 
    return set 
end 

local items = Set { "Apple", "Pear", "Banana" } 

local mt = { __index = _M } 

function _M.new(self) 
    return setmetatable({items=items}, mt) 
end 

function _M.isFruit(self, item) 
    if self.items[item] then 
    return true 
    end 
    return false 
end 

return _M  

现在我尝试访问该在的Nginx的access_by_lua指令,因为下面展示

local f = require "fruits" 
local fruit = f:new() 
fruit:isFruit("Apple") 

在这里,我下面得到一个错误。

lua entry thread aborted: runtime error: access_by_lua:3: attempt to call method 'isFruit' (a nil value)

我不明白发生了什么问题。任何帮助,高度赞赏。谢谢!

我使用Nginx的和Lua JIT 1.6.2 2.0.2

编辑:更正错误消息的行号。

+2

它在nginx之外工作吗? – 2014-12-09 13:15:47

+0

在我的env中,你的access_by_lua中的第7行在哪里? – danielgpm 2014-12-09 15:47:27

+0

@AlexeyTen,我在Openresty尝试过,它的工作原理。 – sudhir 2014-12-11 07:02:51

回答

0

如果您在使用lua时遇到问题,可以使用python模块here。我知道lua并不是非常普遍,你们许多人从未尝试过,而现在python非常普遍。我尝试过,它似乎很棒。