2017-07-07 8 views
0

私はnode.jsを初めて使っていますが、私は個人的なサイトに実装して学習を始めようとしています。私は、ノードサーバーを実行しているが、私はexpress.jsを使用してルーティングを設定しようとしています。私のすべてのファイルは、典型的な静的ファイル.html、.js、.cs、.pngなどです。現在、ルートはgooの 'home'ページにインデックスページを表示します。別のディクトリのインデックスに移動しようとすると、404エラーページが表示されます。 - ビュー(フォルダ) -index.html(ビュー内のファイル) --Projects(ビュー内のフォルダ) -index私の 'portfolio'サイトでexpress.jsでNode.jsを設定する

Server.js package.json node_modules :私のファイル構造は、このようなものです。 HTML(プロジェクト内のファイル)

私Server.jsは

var express = require("express"); 
var app = express(); 
var router = express.Router(); 
var path = __dirname + '/views/'; 

router.use(function (req, res, next) { 
    console.log("/" + req.method); 
    next(); 
}); 

router.get("/", function (req, res) { 
    res.sendFile(path + "index.html"); 
}); 

router.get("/Projects", function (req, res) { 
    res.sendFile(path + "Projects/index.html"); 
}); 

app.use("/", router); 

/*app.use("*", function (req, res) { 
    res.sendFile(path + "404.html"); 
});*/ 

app.listen(3000, function() { 
    console.log("Live at Port 3000"); 
}); 

のように、私はさまざまなリソースで〜過去のために18時間を見てきたと私はちょうど私は確信している何かが欠けているに見えます。問題の私の現在のアイデアは、HTMLのナビゲーションリンクですが、私は進歩なしでそれらを変更しようとしました。

+1

あなたは本当にただ静的ファイルにアクセスするためのルートを設定する必要はありません - あなたが設定する必要があります静的ディレクトリとして使用するパス - http://expressjs.com/en/api.htmlの先頭にある – jackarms

+0

こんにちはJackarms、私は当初このメソッドを使用しました。 'app.use(express.static(path.join(__ dirname、 'public')));'を使うだけで、index.htmlページを定義する必要はありませんか?私はまた、 'app.use(express.static(path.join(__ dirname、 'public')、['index.html']));)を使ってオプションでそれを試みました。最初はロードされていますが、明らかにすべてのcss/jsが不足しています。ページをリフレッシュすると、「エラー:要求されたURLを取得できませんでした」 – ovp

答えて

0

公開ファイル(html、css、..など)しかない場合は、/publicフォルダにすべてを置いて、ルータの代わりにこれを追加できます。

app.use(express.static('public')) 

ドク:https://expressjs.com/en/starter/static-files.html

すべてのファイルがアクセスできるようになります:

/public/my-folder/my-file.png>www.my-dmain.com/my-folder/my-file.png

+0

こんにちはアーサー。私はこの解決策も試みました。何らかの理由で、「Projects」に移動しようとすると、「要求されたURLを取得できませんでした」というメッセージが表示されます。 Apacheサーバー上でこれは正常に動作していました。実際には、私はハード私のウェブページを更新する場合、それはまた、要求されたURLを取得していないエラーをスローします。 – ovp

+0

具体的には、私はこれをして、今私のサイトは、 "要求されたサイト..."というエラーを出します。 'var express = require(" express "); var path = require( 'path'); var app = express(); // var router = express.Router(); // varパス= __dirname + '/ views /'; app.set( 'port'、3000); app.use(express.static(path.join(__ dirname、 'public'))); var server = app.listen(app.get( 'port')、function(){ var port = server.address()。ポート; console.log( 'ポートで発生したマジック' +ポート); }); ' – ovp

+1

私が見ていた実際の問題は、私のwebhostsサイトの所有者インターフェイスがデーモンとプロキシを有効にしていたということでした。変更を確認するためにページをリロードしていたときに、キャッシュがクリアされませんでした。私はserver.js上のプロキシを変更し、私の実際のウェブホストのウェブサイトでプロキシを変更しました。ありがとう – ovp

関連する問題