为什么会在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;