2016-03-22 21 views
2

私は最近、ノードjsのhtmlのパスがどのようになっているのかわからないという問題があります。私はindex.htmlのスクリプトを通常通りリンクします - index.htmlのファイル(node.jsファイルとindex.htmlは同じディレクトリ "res.sendFile(__ dirname + '/index.html');")に相対的です。しかし、私がノードjsで実行されたブラウザでそれを開くと、そのスクリプトの統計は "can not GET blabla"となります。その代わりに、ノードjsなしでindex.htmlをクリックするだけで開くことができます。どのようにノードjsのhtmlパスを記述する必要がありますか?ノードJS - HTMLパス

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app), 
    io = require('socket.io').listen(server), 
    port = Number(process.env.PORT || 3000), 

server.listen(port); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

ありがとうございました! :)この時

+0

を使用することができます。 XD。おそらくアクセス許可に間違っていますか? – SCaffrey

答えて

2

見て:あなたはノードを言った

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

"ブラウザが/を要求する場合は、それindex.htmlを与えます"。

ブラウザがsomeScript.jsを要求するとどうなりますか?

あなたはノードに何をすべきかを教えていません。

(静的ファイルを個別に処理するのではなく、静的ファイルを扱うためのライブラリが必要です)。あなたは、サーバーの静的ファイルに明示設定する必要があります

+0

ありがとう、素敵な一日を! :) – dunnohowishouldnamemyself

0

、例えば、「国民

var express = require('express'); 
 
var app = express(); 
 
var path = require('path'); 
 

 
// viewed at http://localhost:8080 
 
app.get('/', function(req, res) { 
 
    res.sendFile(path.join(__dirname + '/index.html')); 
 
}); 
 

 
app.listen(8080);

ExpressJS to Deliver HTML Files

Render HTML file in ExpressJS

0
というディレクトリの下にあるすべての静的ファイルを置きます

書き込み時:

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

これは、index.htmlファイルのみを提供し、あなたのhtmlに追加した他のjsスクリプトおよびスタイルシートは提供しません。

それを解決するための2通りの方法があります。それらの両方のために

が、私は「パス」モジュールを使用することをお勧めします。

解決方法1:

var path = require('path') 
app.get('/path/to/js/foo.js',function(req,res){ 
    res.sendFile(path.resolve(__dirname,'/path/to/js/foo.js') 
}) 
app.get('/path/to/css/bar.css',function(req,res){ 
    res.sendFile(path.resolve(__dirname,'/path/to/css/bar.css')) 
}) 

とその上のすべての.cssのand.jsためには、あなたがあなたのindex.htmlに追加したファイル。

解決方法2:

あなたはあなたのプロジェクトのルートディレクトリにパブリックディレクトリを作成することができます。その中にあなたのすべてのimg、css、jsファイルがあります。

次に、

var path = require('path') 
app.use(express.static('public')) 
app.get('/',function(req,res){ 
    res.sendFile(path.resolve(__dirname,'/index.html') 
}) 
0

あなたは、このコードは実際に私のPC上で動作します

app.use(express.static(path.join(__dirname, "folder-name")));