これが私の現在のフォルダ構造です
css
app.css
js
app.js
node-modules
index.html
node-server.js
package.json
ノードサーバーはindex.html
をホストしていますが、app.js
およびapp.css
ファイルをロードする方法を理解できません。
index.html
は次のものをロードします:
<script src="js/app.js"></script>
<link rel="stylesheet" type="text/css" href="css/app.css"/>
エラーメッセージは次のとおりです。
Failed to load resource: the server responded with a status of 404 (Not Found)
2http://localhost:3000/css/app.css Failed to load resource: the server
responded with a status of 404 (Not Found)
モジュールまたは何かを要求またはロードする必要があることはわかっていますが、何がわからないのですか?.
ありがとう
理由 Node.Jsはそれ自体で静的コンテンツを提供しません。Nodeを介して静的コンテンツを提供するためにルートを定義する必要があります。
Solution(Manual):
var express = require('express'),
path = require('path'),
app = express();
app.get('/index.html',function(req,res){
res.sendFile(path.join(__dirname + '/index.html'));
});
app.get('/css/app.css',function(req,res){
res.sendFile(path.join(__dirname + '/css/app.css'));
});
app.get('/js/app.js',function(req,res){
res.sendFile(path.join(__dirname + '/js/app.js'));
});
app.get('/', function(req, res) {
res.redirect('index.html');
});
app.listen(8080);
より良いソリューション:
ディレクトリ構造:
public
css
app.css
js
app.js
index.html
コード:
var express = require('express'),
path = require('path'),
app = express();
// Express Middleware for serving static files
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res) {
res.redirect('index.html');
});
app.listen(8080);
Tomasz Kasperek が指摘したように、これらのファイルを静的ディレクトリでホストするつもりであることをExpressに通知する必要があります。これは技術的には 静的ミドルウェアの定義 と呼ばれます。
これは次のようになります。
var express = require('express');
var app = express();
// first parameter is the mount point, second is the location in the file system
app.use("/public", express.static(__dirname + "/public"));
これは非常にシンプルなので、特定のファイルやフォルダを静的にするのではなく、public
フォルダを作成する方法をお勧めします。
次に、ファイルはルートindex.html
から同様に参照されます。
<link href="public/css/reset.css" rel="stylesheet" type="text/css">
これがお役に立てば幸いです!
この構文を使用して機能させました
app.use(express.static('public'));
Cssおよびjsファイルを「public」ディレクトリの下にコピーし、index.htmlファイルに参照を追加します
<link rel="stylesheet" href="/css/reset.css">