Lua – attempt to call method 'new' (a nil value)-Collection of common programming errors
First of all, the semicolons at the end of lines are not necessary and probably a bad habit for writing Lua code. Secondly, I changed require 'middleclass'
to require 'middleclass.init'
in both files and removed module(..., package.seeall)
. After that, the example code worked just fine on my machine with Lua 5.1.4.
main.lua
require 'Person'
local testPerson = Person:new("Sally")
testPerson:speak()
Person.lua
require 'middleclass.init'
Person = class('Person')
function Person:initialize(name)
self.name = name
print("INITIALIZE: " .. self.name)
end
function Person:speak()
print('Hi, I am ' .. self.name ..'.')
end
You may be including the middleclass.lua file directly. It is not setup to work that way. The intention is to include middleclass/init.lua.
If you use the two files exactly as shown above and layout your files as shown below this will work.
./main.lua
./Person.lua
./middleclass/init.lua
./middleclass/middleclass.lua