2017-05-12 24 views
0

在Apache让我悲惨失败后,我决定去OpenResty路线。 到目前为止,Lua代码正在执行,但是我选择将代码分隔成多个模块,以使代码更具可读性。OpenResty需求无法找到模块

-- Define modules table 
local modules = { 
    head = require("head"), 
    header = require("scripts.header"), 
    leftNav = require(".scripts.leftnav") 
} 

我试过了几种需要文件的方法; - 我从/ scripts /目录中取出了一个文件,并将其移动到根目录,找不到文件 - 我试过用/在一段时间之前引用/ scripts /目录 ,而且全部是无济于事。模块根本找不到。

是否有某种我需要找到这些文件的特殊技巧?

这里是从错误日志的摘录:

stack traceback: 
coroutine 0: 
    [C]: in function 'require' 
    ./html/mailarchive/index.lua:10: in function <./html/mailarchive/index.lua:1>, client: 127.0.0.1, server: localhost, request: "GET/HTTP/1.1", host: "localhost" 
2017/05/12 10:26:13 [error] 113864#120792: *14 lua entry thread aborted: runtime error: ./html/mailarchive/index.lua:10: module 'head' not found: 
    no field package.preload['head'] 
    no file './site/lualib/head.lua' 
    no file './site/lualib/head/init.lua' 
    no file './lualib/head.lua' 
    no file './lualib/head/init.lua' 
    no file '.\head.lua' 
    no file 'C:\nginx\lualib\head.lua' 
    no file 'C:\nginx\lua\head.lua' 
    no file 'C:\nginx\lua\head\init.lua' 
    no file 'C:\Program Files (x86)\Lua\5.1\lua\head.luac' 
    no file './site/lualib/head.so' 
    no file './lualib/head.so' 
    no file '.\head.dll' 
    no file 'C:\nginx\lualib\head.so' 
    no file 'C:\nginx\head.dll' 
    no file 'C:\nginx\loadall.dll' 
stack traceback: 
coroutine 0: 
    [C]: in function 'require' 
    ./html/mailarchive/index.lua:10: in function <./html/mailarchive/index.lua:1>, client: 127.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost", referrer: "http://localhost/" 

回答

1

一些经过研究,我发现,使用OpenResty,期间并未提及到当前目录执行脚本位于()。 ,而是指nginx工作的目录 - 在我的情况下是C:\ nginx。

考虑到这一点,从改变我的资源定位器:

require(".scripts.head") 
require(".scripts.header") 
(...) 

require(".html.mailarchive.scripts.head") 
require(".html.mailarchive.scripts.header") 
(...) 

的伎俩。

新路径与C:\ nginx \ html \ mailarchive \ scripts \ head.lua等相关。