2016-11-16 118 views
1

此問題已被多次詢問我知道,但我已搜索並嘗試了所有內容,但仍無法正常工作。我是Node新手。我的文件目錄的設置是這樣的:快速服務器無法從Index.html中提供靜態文件

io 
-node_modules/ 
-app/ 
    --css 
    --js 
-index.html 
-server.js 

Server.js:

var express = require('express'); 
var app = express(); 
//app.use(express.static(__dirname+'/app/css')); 
app.use('/css', express.static(__dirname+'/app/css')); 
var server=require('http').createServer(app); 
var io=require('socket.io').listen(server); 
users=[]; 
connections=[]; 



//set up server 
server.listen(process.env.PORT || 3001); 
console.log('Server running...'); 

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

的Index.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 

     <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame 
     Remove this if you use the .htaccess --> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

     <title>IO Chat</title> 
     <meta name="description" content=""> 
     <meta name="author" content="Lloyd"> 

     <meta name="viewport" content="width=device-width; initial-scale=1.0"> 

     <link rel="shortcut icon" href="/favicon.ico"> 
     <link rel="apple-touch-icon" href="/apple-touch-icon.png"> 

    <link href="css/main.css" rel="sylesheet"> 
    <link href="css/bootstrap.css" rel="sylesheet"> 
    <!--link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"--> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.5.1/socket.io.js"></script> 
    </head> 

所以我需要知道的是,爲什麼指數.html似乎無法引用我的css文件。我嘗試了app.use()中的多種可能的組合,並且它只是不想工作,即使有時我可以直接從瀏覽器訪問該文件。

回答

2

服務器:

app.use(express.static(__dirname+'/app/css')); 
在客戶端

<link href="/main.css" rel="stylesheet"> 
<link href="/bootstrap.css" rel="stylesheet"> 
+0

沒有,沒有。 Nada :(注意,我可以訪問CSS文件本身,索引文件只是沒有正常工作,所以我想這就是我設置我的'app.get()' – Lloydinator

+0

你可以隨時訪問文件絕對路徑,你根本不需要靜態服務。順便說一句,「不正確的行爲」意味着什麼,是什麼問題? – mk12ok

+0

你確定你向我們展示了正確的目錄結構嗎?你發送'__dirname +「/ app/index.html「' - 可以嗎?從您的信息我寧願看到它應該是'__dirname +」/index.html「' – mk12ok

0

我認爲你正在使用的app.use錯誤

試試這樣說:

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

這個呼叫路由到css/...名爲靜態目錄。

+0

我也這麼認爲。但它仍然無法正常工作。現在它是'app.use('/ css',express.static(__ dirname +'/ app/css'));'儘管我可以通過訪問localhost:3001/css/main.css來訪問css文件, index.html只是不會引用它。這有點令人費解。 – Lloydinator

相關問題