Openwrt luci 用模板做页面报错: unfinished string near '"'
By:Roy.LiuLast updated:2021-03-11
Openwrt的luci页面开发过程中,会自己定义模板页面,然后再渲染出来,返回到浏览器。我在按照官网的一个例子自定义页面的过程中。菜单的展示,CBI 方式都没有问题,但用模板方式就出问题了。报错如下:
/usr/lib/lua/luci/template.lua:81: Failed to load template 'customize/view_constants'. Error while parsing template '/usr/lib/lua/luci/view/customize/view_constants.htm': Syntax error in /usr/lib/lua/luci/view/customize/view_constants.htm:1: unfinished string near '"' stack traceback: [C]: in function 'error' /usr/lib/lua/luci/template.lua:81: in function '__init__' /usr/lib/lua/luci/util.lua:65: in function 'Template' /usr/lib/lua/luci/template.lua:28: in function 'render' /usr/lib/lua/luci/dispatcher.lua:1020: in function 'dispatch' /usr/lib/lua/luci/dispatcher.lua:478: in function </usr/lib/lua/luci/dispatcher.lua:477>
看样子就是字符串解析问题。
分析问题,逐步定位, 我定义的页面如下,非常简单:
<%+header%> <h2>My LUCI Template Test Page</h2> <%+footer%>
尽管这么简单,还是会报错,根据错误提示,基本分析是字符串解析出的问题。首先想到的是,不换行吧,直接把模板改成这样:
<%+header%> <h2>My LUCI Template Test Page</h2> <%+footer%>
也就是不换行,结果正常了。界面显示如下:
但这真正解决问题了吗,在做页面的过程中,模板页面不可能不换行的。所以又回到原来多行的方式。因为我是在idea 里面编辑的模板,然后ssh上传到openwrt的luci 对应文件夹中去的。在openwrt中直接vi 命令打开看看多行情况下是什么样子.
到此为止,我想大家都知道原因了。编辑器惹的祸,或者是window与linux下回车键编码不一致造成的。所以需要转换一下,这种转换很多文本编辑器都有这个功能,这里就不记录了。但在idea里面可以直接在编辑器的状态栏修改.
修改之后,所有的回车就会用 linux下的编码,然后一切正常了。
From:一号门
Next:在微软必应网站上获取高清网页背景图
COMMENTS