1

これは私を狂わせています。

Express付きのノードアプリがあります。index.ejsというファイルを提供します。

私がやりたいのは、このページにjavascriptファイル(jqueryのようなもの)をインポートすることだけです。しかし、それはそれを引き上げることはありません、そして私は(これは単純なはずなので)気が狂います。

サーバー側では、app.jsというファイルに次のコードがあります。

var express = require('express');
var app = express.createServer();
var hostName = (process.env.VCAP_APP_HOST || 'localhost');
app.listen( process.env.VCAP_APP_PORT ||  8000);
app.use(express.static(__dirname +  '/public/javascript/'));


//Create the view
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.set('view options', { layout: false });
app.get('/', function(req, res){
    res.render('index.ejs', {
              item : "document.write('Hello World');"
    });
});

ejsファイルには、次のものがあります。

<html>
        <script>
        <%= item %>
    </script>

<a href="">Link</a>
<script type="text/javascript" src="/javascript/jquery.js"></script>
</html>

スクリプトがロードされていないことがコンソールに表示されます(エラーが表示されます)。しかし、私の一生の間、私はその理由を理解することができません。

4

2 に答える 2

3

'/'の下にある他のファイルを提供するには、静的サーバーを追加する必要があります。現在、サーバーは「/」(およびビュー)に送信されたリクエストに応答しているだけです。

次の前に、この行をエクスプレス設定に追加しますapp.get

// DOCUMENT_ROOT should point to the directory that contains your javascript directory.
app.use(express.static(DOCUMENT_ROOT));
于 2012-07-14T06:22:49.007 に答える
0

あなたのクライアントが要求するとき/javascript/jquery.js、あなたのサーバーはを探して/public/javascript/javascript/jquery.jsいるでしょう、そして私はむしろそれがそれを見つけるとは思えません。express.static()のパス名をに設定すると、実際にはにあると__dirname + '/public'想定して機能するはずです。jquery.jsyour_app/public/javascript

于 2012-07-14T06:50:30.723 に答える