0

翡翠ファイルをレンダリングするウェブサーバーを実行しています。翡翠ファイルには、いくつかのjavascriptファイルがあります。ページは正常にレンダリングされますが、javascriptファイルが見つかりません。

ノードサーバー

var http = require('http')
  , url = require('url')
  , fs = require('fs')
  , jade = require('jade')
  , server;

server = http.createServer(function(req, res) {
  var path = url.parse(req.url).pathname;

  switch (path) {

    case '/audio':
        var options = {pretty: true};
        jade.renderFile('myJadeFile.jade', options, function(err, html) {
          if (err) return send404(res);
          res.writeHead(200, {"Content-Type": "text/html"});
          res.write(html, 'utf8');
          res.end();
        });
        break;

    default: send404(res);
  }
});

function send404(res) {
  res.writeHead(404);
  res.write('404');
  res.end();
}

server.listen(3000, function() {
  console.log("listening on port:3000");
});

翡翠ファイル

!!! 5
html(lang="en")
  head
    meta(charset="UTF-8")
    title Please Work
    script(src="myJSFile.js")
  body
    #container
      h1 It worked!

このエラーが発生します:
GET http://localhost:3000/myJSFile.js 404 (Not Found)

ファイルが見つからず、javascriptファイルを見つけるためにサーバーサイドのjadeオプションに何を設定する必要があるのか​​わかりません。すべてのファイルは同じフォルダにあります。

助言がありますか?

4

1 に答える 1

1

Jade は HTML レンダリング ツールであるため、標準<script>タグをレンダリングしています。JS を HTML ファイル自体にコンパイルするわけではありません。caseブラウザが依存ファイルを取得できるように、依存ファイルを処理するためにハンドラを提供する必要があります。

これは、サーバー ファイルと同じディレクトリに myJSFile.js があると仮定した、この特定のケースの例です。

case '/myJSFile.js':
  fs.createReadStream(__dirname + path).pipe(res);
  break;
于 2013-03-04T00:42:23.993 に答える