Vyacheslav
Vyacheslav

Reputation: 27211

Lapis: could not load `etlua` file

I have got hello.etlua @ /usr/local/share/lua/5.1/lapis/views/ etlua already installed by luarocks. OS Debian. This code

local lapis = require("lapis")

local app = lapis.Application()
app:enable("etlua")

app:match("/", function()
return { render: "hello" }
end)

return app

gives me such error: Error

/usr/local/share/lua/5.1/lapis/application.lua:121: module 'views.index' not found: no field package.preload['views.index']could not load etlua file no file './lua/views/index.lua' no file '/etc/nginx/lua/views/index.lua' no file './views/index.lua' no file '/usr/local/share/luajit-2.1.0-alpha/views/index.lua' no file '/usr/local/share/lua/5.1/views/index.lua' no file '/usr/local/share/lua/5.1/views/index/init.lua' no file './views/index.so' no file '/usr/local/lib/lua/5.1/views/index.so' no file '/usr/local/lib/lua/5.1/loadall.so' no file './views.so' no file '/usr/local/lib/lua/5.1/views.so' no file '/usr/local/lib/lua/5.1/loadall.so' Traceback

stack traceback: [C]: in function 'require' /usr/local/share/lua/5.1/lapis/application.lua:121: in function 'render' /usr/local/share/lua/5.1/lapis/application.lua:406: in function [C]: in function 'xpcall' /usr/local/share/lua/5.1/lapis/application.lua:400: in function 'dispatch' /usr/local/share/lua/5.1/lapis/nginx.lua:181: in function 'serve' content_by_lua:2: in function

Usual template works properly:

local template = etlua.compile([[
Hello <%= name %>,
Here are your items:
<% for i, item in pairs(items) do %>

<%= item -%> <% end %> ]])
print(template({
name = "leafo",
items = { "Shoe", "Reflector", "Scarf" }
}))

I recieve the data in the log-file. What is it? What I'm doing wrong? Is this a bug?

Upvotes: 1

Views: 636

Answers (2)

Vyacheslav
Vyacheslav

Reputation: 27211

The solution is wrong path of view. I put files at /usr/local/share/lua/5.1/lapis/views. But this is incorrect. The correct location is /usr/local/share/lua/5.1/views.

Upvotes: 0

user2995502
user2995502

Reputation: 61

package.path = '/usr/local/share/lua/5.1/lapis/?.lua;' .. package.path
local lapis = require("lapis")

Upvotes: 3

Related Questions