2016-09-24 13 views
1

私のフォルダ階層は以下の通りです。別のサブフォルダにhtmlファイルを置くexpress.js

公共

---- index.htmlを

SRC

---- server.js

私はコード

var express = require('express'); 
 
var app = express(); 
 
var serv = require('http').Server(app); 
 
var net = require('net'); 
 
var path = require('path'); 
 
var port = 3000; 
 

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

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

 
serv.listen(3000, function(){ 
 
    console.log('port ' + port + ' is started to being listened') 
 
}); 
 

 
var io = require('socket.io')(serv,{});
を実行すると

禁止エラーを返します。別のサブファイルのファイルにアクセスするにはどうすればよいですか?


まず、基本を理解するために複数のプロジェクトを実行していると私は混乱していたため、実際に解決したとは思っていませんでした。しかし、今はすべてが明確です。私が実際にしようとしているのは、Expressを使ってすべてをフォルダに分割しようとすることです。私はhttpについてあまり知らなかったので、たくさんの動画を見て、ついにyoutubeのexpressの公式な紹介ビデオを見てから分かった。

もう一度私が達成しようとしているもの。 index.htmlを --src --public

-localhost --- ---ゲームプログラミングに関係するすべてのサーバーのjsファイルや他のファイル。

私が上記に到達しようとしていたとき、私はそれをすることができませんでした。実際にそのトリックは何でしたか?

localhostの下に別のサブディレクトリである 'public'ディレクトリを指定して、それを最初から単純なstaticとして使用する変数を作成しますが、あまり知らなかったので、勉強しても使用できませんでしたチュートリアルはほとんどありません。上記のマイケルのように、私は次の行を必要としなかった。

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

私がしたのはすべてでした。


 
var publicDir = require('path').join(__dirname, '/../public'); 
 

 
app.use(express.static(publicDir));

+0

正確なエラーメッセージを表示できますか? – andrel

答えて

4
app.use('/../public/' 

本当に意味がありません。このパラメータはリクエストURLを表します。リクエストURLは、ルートフォルダ内ではなく他の階層の階層にあります。

app.use('/'は、http://localhost:3000のようなリクエストURLと同じです。つまり、これはウェブサイトの絶対的な基礎であり、いわゆるルートです。だから'/../public'どこにポイントする必要がありますか?このようなアドレスにアクセスできるURLはありません。

あなたがapp.use('/public'を記述する場合には、http://localhost:3000/public

上の要求をリッスンします。しかし、もちろん、あなたが持っているように、ファイル構造にあるファイルを送信することができます。だから、おそらくあなたが望んでいたものです:

のようなフォルダ構造内の静的ファイルを検索するために
app.use(express.static(__dirname + '/../public')); 

:あなたはhttp://localhost:3000/styles.css

することもでき、完全に同じよう静的ファイルにアクセスできる場所

public 
-styles.css 
-script.js 
-index.html 
server 
-currentscript.js 

このコントローラを削除してください:

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

HTMLのような静的ファイル上記のExpress静的ファイル・コントローラーによってすでに提供されています。 index.htmlにアクセスするにはこれで十分ですhttp://localhost:3000

関連する問題