5

デフォルトのエクスプレスライブラリを使用して、nodejsで単純な静的ページを作成しました。ただし、実行すると、nodejsはパブリックファイルを取得できず、404をスローします。

私が与えた道は正しいと信じています。これは私を怒らせています。私は問題が顔の手のひらに値するためにとても小さくて単純でなければならないことを知っています、しかし私はそれを見つけることができません。

ここで私を助けてくれませんか。

コードは Rishavs/ComingSoonPageのgithubにあります

お手数をおかけしますが、よろしくお願いいたします。

〜リシャフ

4

5 に答える 5

4

app.jsで、次のように静的ファイルを先にマウントします。

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.static(path.join(__dirname, '/public')));
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
});

編集/public: VSに注意してくださいpublic

于 2013-01-14T12:19:40.373 に答える
3

マークが言ったように。あなたのhtmlは「public」を参照してはいけません。

<link href="../../styles/site.css" rel="stylesheet" />

対。

<link href="../../public/styles/site.css" rel="stylesheet" />
于 2015-02-04T13:00:18.397 に答える
0

Express 2.5.8 を使用しています。次のようにパブリックにアクセスできました。

app.use(express.static(__dirname + '/public'));

次に、レイアウトに次のようなものがあることに気付きました。

<link rel="stylesheet" type="text/css" href="style.css">

私のstyle.cssを期待どおりに提供していませんでした。次のようなことを期待していました。

<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">

app.js ファイルに以下を追加すると解決しました。

  app.use(express.static(__dirname + '/public/stylesheets'));
  app.use(express.static(__dirname + '/public/javascripts'));

すべてが次のように見えました:

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'handlebars');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
  app.use(express.static(__dirname + '/public/stylesheets'));
  app.use(express.static(__dirname + '/public/javascripts'));
});
于 2014-11-20T14:55:12.247 に答える
-3

このexpress.staticメソッドには、再帰的にサブフォルダーが含まれていません。スクリプトとスタイルは、それぞれpublic/javascriptsとpublic/stylesheetsの下にあります。次のように、これらのフォルダに直接提供する必要のある静的ファイルが含まれていることをExpressに通知する必要があります。

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
  app.use('public/javascripts', express.static(path.join(__dirname, 'public/javascripts')));
  app.use('public/stylesheets', express.static(path.join(__dirname, 'public/stylesheets')));
});

最後の2行は重要な行です。メソッドに渡される引数は2つあることに注意してくださいapp.use。1つ目は、スクリプトが提供されるパス(つまり、スクリプトを取得するためにブラウザーに入力する必要があるパス)を示します。2つ目は、サーバー上のファイルの物理的な場所です。

于 2013-01-14T12:32:33.080 に答える