表达3迁移后的很多玉语法错误

时间:2013-09-29 15:21:29

标签: express pug

我刚刚更新了我的快递版本2,以便为我的网络应用程序表达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表达式。

2 个答案:

答案 0 :(得分:1)

这是migration guide

我想在jade部分添加,'"必须在以下表达式中交替:

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

在使用表达2的玉的版本中,仅使用'或仅使用"就可以了。

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

假设您将以下数据上下文提供给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现在是undefined,快递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)

答案 1 :(得分:0)

在任何scriptstyle代码上,请务必将其更改为script.style.

根据Jade的更新,你必须这样做。我在使用Google Analytics代码时遇到问题,直到我在Git repo上阅读

示例:

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');