0

Web アプリケーションの Express バージョン 2 を 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'}")

Express 2 が使用されている jade のバージョンでは、only'または onlyを使用して"も問題ありませんでした。

もう 1 つの変更点は、jade テンプレート内で宣言された変数のスコープが少し変更されたことです。

render関数に次のデータ コンテキストを与えるとします。

{
    categories: [ ... ]
}

と 1 つの jade ファイル:

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

そしてchild翡翠

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

メインの jade ファイルにcategoriesundefined、express 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

いずれかのscriptまたはstyleタグで、必ずそれらをscript.andに変更してくださいstyle.

ジェイドの更新によると、あなたはそれをしなければなりません。Git リポジトリでそれを読むまで、Google アナリティクスのコードに問題がありました

例:

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 に答える