2016-11-16 4 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

. Вы всегда можете получить доступ к файлам с помощью абсолютный путь, вам вообще не нужна статическая служба.Btw, что означает «не ведет себя правильно», в чем проблема? – 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'));' и даже если я могу получить доступ к файлу css, перейдя на localhost: 3001/css/main.css, index.html просто не будет ссылаться на него. Это немного озадачивает. – Lloydinator