質問

私は何日も私を悩ませてきたバグがありました。私はノードとジェイドのテンプレートシステムがかなり初めてなので、私と一緒に耐えています。次の方法でスタイルシートを追加したいと思っています。

app.js(express):

app.get('/', loadUser, function(req, res) {
 var User = req.user;
 // console.log(User.groups[2]);
 // var groups = User.groups.split(',');
 // OK DUh. This only gets called when the client has the script Socket.IO
 // and client runs socket.connect()

 getMessages(User, function(messages) {

  var locals = {
   scripts: [
    'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js',
    'index.js'
   ],

   stylesheets: [
    'index.css'
   ],

   user : User,
   messages: messages
  };

  console.log('ok');

  res.render('app.jade', {locals : locals});

 });

});

in layout.jade(app.jadeで実行されます)私は持っています:

!!! 5
html
 head
  title UI
  link(rel='stylesheet', href = 'stylesheets/reset.css')
  link(rel='stylesheet', href = 'stylesheets/layout.css')
  - var stylesheets = stylesheets || [];
            #{stylesheets}
  - each stylesheet in stylesheets
   - if(stylesheet.indexOf('http') >= 0)
    link(rel='stylesheet', href = stylesheet)
   - else
    link(rel='stylesheet', href = "stylesheets/"+stylesheet )

さらに、さらに...私は同じエラーにぶつかり続けます:

9. ' - if(stylesheet.indexOf(\'http') >= 0)'

Object function () {
  var o = {}, i, l = this.length, r = [];
  for(i=0; i
  for(i in o) r.push(o[i]);
  return r;
} has no method 'indexOf'

さて、Gotchaは、この正確なテンプレートがまったく同じ変数に合格する別のアプリケーションで機能するということです。この厄介な問題について皆さんが持っている提案に本当に感謝しています!

ありがとう!マット・ミューラー

役に立ちましたか?

解決

だからここにあなたの問題があります...

この行で:

res.render('app.jade', {locals : locals});

あなたは地元の人々を通り過ぎています==>地元の人々、それはハッシュです(OK、私はPerlの男だと思います、JSはそれらを「連想アレイ」と呼んでいます)

それで、あなたのジェイドテンプレートの中には、ラインがあります:

 - var stylesheets = stylesheets || []; 

Jadeの内部では、変数の「ローカル」を定義しましたが、他のすべてはその下に隠されているため、変数「スタイルシート」は定義されていません(locals.stylesheetsは代わりに定義されています)。したがって、このコードの行は、変数「スタイルシート」を「[]」に設定します

それで、ここが私が推測しなければならないところです。 「インデックス」は、配列オブジェクトの方法です。おそらく、Jade内で構築された配列にはこの方法はありませんが、node.jsで構築された配列にはこの方法があります。 「styleSheets.indexof(...)」と呼ばれるエラーが発生した理由を説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top