0

我刚刚将我的 express 版本 2 更新为我的 web 应用程序的 express 3。我突然开始收到许多奇怪的语法错误。

最初我认为布局结构发生了一些变化,因为我遇到了这样的错误:

SyntaxError: views/fragments/menu_items_admin.jade:1
  > 1| extends ../layout_tools
    2| 
    3| block menu_items
    4|     include ../fragments/menu_items_admin

Unexpected identifier
    at Function (<anonymous>)
    at assertExpression (node_modules/jade/lib/lexer.js:39:3)
    at Object.Lexer.attrs (node_modules/jade/lib/lexer.js:593:20)

但布局仍然有效。

另一个错误:

SyntaxError: views/fragments/admin/works.jade:12
    10|     script(src='/js/#{SOURCES["jquery.tags.js"]}')
    11|     script(src='/js/#{SOURCES["wh.js"]}')
  > 12|     if CONFIG.dev
    13|         script(src='/js/external/typeahead.js')
    14|     else
    15|         script(src='/js/external/typeahead.min.js')

Unexpected identifier
    at Function (<anonymous>)
    at assertExpression (node_modules/jade/lib/lexer.js:39:3)
    ...

还能是什么?有些布局有效,有些则无效。显示的错误主要在include表达。

4

2 回答 2

1

这是这个迁移指南

我想补充一下玉的部分,'"必须交替表达,如:

a(hreh="/dynamic/#{'link'}")

在表示2使用的翡翠版本中,仅使用'或仅使用"都可以。

我看到的另一个变化是在翡翠模板中声明的变量范围发生了一些变化:

假设您为函数提供以下数据上下文render

{
    categories: [ ... ]
}

和一个玉文件:

div
    for category in categories
        a(href='#') #{category.name}
div
    include child

child

categories = categories || []
for category in categories
    span #{category.name}

在主要的翡翠文件categories中,现在undefinedexpress 2 使用的版本中是给定的数组。这会引发如下错误:

  > 21|     for category in categories
    22|         a(href='#') #{category.name}

Cannot read property 'length' of undefined
    at jade.debug.unshift.lineno (eval at <anonymous> (node_modules/jade/lib/jade.js:152:8), <anonymous>:1052:31)
于 2013-09-29T17:06:07.227 回答
0

在任何scriptstyle标签上确保将它们更改为script.style.

根据 Jade 更新,您必须这样做。我在使用 Google Analytics 代码时遇到了问题,直到我在 Git 存储库中阅读了该代码

例子:

script.
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-11111111-1', 'yourdomain.com');
        ga('send', 'pageview');
于 2014-01-20T05:15:24.967 回答