2016-09-24 31 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,{});

它返回禁止的錯誤。我怎樣才能到達另一個子文件中的文件?


首先,我以爲解決了,它實際上並沒有解決,因爲我運行多個項目瞭解的基本知識,我很困惑。但現在一切都很清楚。我實際上試圖做的是試圖使用快遞將所有內容分割爲文件夾。由於我對http的瞭解不多,因此我觀看了很多視頻,最後,我在YouTube上觀看快速官方介紹視頻後發現它。

這裏又是我想要完成的;

-localhost --public --- index.html的 --src ---所有服務器js文件和其他文件,將涉及遊戲編程。

正如我試圖達到上面,我無法做到這一點。實際上做什麼的竅門是;

創建一個變量,指定'public'目錄,它是localhost下的另一個子目錄,並將其用作靜態,從一開始就很簡單,但由於我不太瞭解,所以在學習後我無法使用它幾個教程。正如邁克爾在上面提到的那樣,我甚至不需要以下幾行;

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

我所做的只是;


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

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

+0

來訪問您的index.html您能看到確切的錯誤信息嗎? – andrel

回答

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

並沒有真正意義。此參數表示請求URL。您不能偵聽位於其他位置但不位於根文件夾內的請求URL。

請記住,app.use('/'等於一個請求URL,如http://localhost:3000 - 這意味着這是網站的絕對基礎 - 所謂的根。那麼'/../public'應該指向哪裏?沒有可以到達這樣的地址的URL。

如果你寫app.use('/public'將偵聽請求上http://localhost:3000/public

但是,當然,你必須要在可以發送位於文件結構的文件。所以,可能是你想要的東西是:

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

爲了尋找像一個文件夾結構的靜態文件:

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

在那裏你可以訪問諸如http://localhost:3000/styles.css

你也可以完全靜態文件刪除此控制器:

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

靜態文件,如HTML已經由上面提到的Express靜態文件控制器提供服務。 這可以通過調用http://localhost:3000

相關問題