为什么会在express.js中导致错误?
如果我在express.js服务的HTML页面中包含以下JavaScript代码段,则会出现错误。 为什么?
<script> var foo = /<%([\s\S]+?)%>/g; </script>
错误:
500 SyntaxError: Unexpected token ILLEGAL...
编辑:
完整页面:
<!DOCTYPE html> <html lang="en"> <head></head> <body> <script> var foo = /<%([\s\S]+?)%>/g; </script> </body> </html>
节点:v0.10.21 NPM:1.3.11 Express:3.3.8
编辑2:
如果我删除了百分号,那么错误就会停止。 我可以使用unicode字符编码replace百分号吗?
您的视图模板引擎(可能是EJS)试图插入部分正则expression式 – <%
means“代码从这里开始。
这不是最优雅的解决scheme,但是您可以强制模板将这些符号插入文本中,将其视为string。 尝试如下所示:
<script> var foo = /<%= '<' + '%' %>([\s\S]+?)<%= '%' + '>' %>/g; </script>
我刚刚安装了一个快速服务器,并加载了EJS来testing这个。 转义百分号时,我试了一下。 我不知道这是否会搞砸你要去的东西。
var foo = /<\%([\s\S]+?)\%>/g;