2017-05-12 2 views
0

Après Apache m'a lamentablement échoué, je décide d'aller la route OpenResty. Jusqu'à présent, le code Lua est en cours d'exécution, mais j'ai choisi de séparer la génération en plusieurs modules, pour rendre le code plus lisible.OpenResty besoin ne peut pas trouver des modules

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

J'ai essayé plusieurs méthodes de demande de fichiers; - J'ai pris un fichier sur le répertoire/scripts /, et déplacé dans le répertoire racine, fichier ne peut pas être trouvé - J'ai essayé référençant le/scripts/avec/sur une période préalable et tout est en vain. Les modules ne sont tout simplement pas trouvés.

Y at-il une sorte de truc spécial que je dois trouver ces fichiers?

Voici un extrait du journal d'erreur:

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/" 

Répondre

1

Après un peu plus des recherches, je trouve que l'utilisation OpenResty, la période ne se réfère pas au répertoire courant le script d'exécution est situé dans (.) , il se réfère plutôt au répertoire dans lequel nginx travaille - dans mon cas C: \ nginx.

Avec cela à l'esprit, en changeant mes localisateurs de ressources à partir de:

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

à

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

a fait l'affaire.

Les nouveaux chemins sont corrélés à C: \ nginx \ html \ mailarchive \ scripts \ head.lua, etc.