require 动态加载文件

108 views
Skip to first unread message

lik0914

unread,
Jun 12, 2017, 5:56:38 AM6/12/17
to openresty
local env = ngx.var.ENV

-- env == testing

--local urlConf = require "pushGateWay.config.testing.url"

local urlConf = require 'pushGateWay.config.' .. env .. '.url'

这样加载一个文件, 提示错误
2017/06/12 17:54:37 [error] 4309#0: *142031 lua entry thread aborted: runtime error: /home/work/nginx/nginx/../pushGateWay/push.lua:23: module 'pushGateWay.config.' not found:
no field package.preload['pushGateWay.config.']
no file '/home/work/nginx/nginx/../pushGateWay/config/.lua'

看错误日志, 应该是变量后面的都没有解析

请教应该怎么写呢

tokers

unread,
Jun 12, 2017, 12:12:37 PM6/12/17
to openresty
这是 Lua 的一个 syntax suger, 当函数的参数是一个字符串时,你可以不带括号引用,所以这里 require 的参数就是第一个被单引号引用的字符串。如果你想要达到预期效果,请加上括号,也就是
require('pushGateWay.config' .. env .. 'url')

lik0914

unread,
Jun 12, 2017, 11:19:18 PM6/12/17
to openresty
我试了一下, 确实是你说的这个原因,谢了

在 2017年6月13日星期二 UTC+8上午12:12:37,tokers写道:
Reply all
Reply to author
Forward
0 new messages