2013-11-26 36 views
0

我想加載index.html當我請求http://localhost:4935/所以我對這個代碼是這樣如何自動加載自定義文件?

const MODULES_DIR = '/usr/local/lib/node_modules/'; 
const APP_PORT = 4935; 

var express = require(MODULES_DIR + 'express'), 
    app = express(), 
    http = require('http'), 
    server = http.createServer(app), 
    io = require(MODULES_DIR + 'socket.io').listen(server), 
    fs = require('fs'), 
    path = require('path'); 

server.listen(APP_PORT); 

app.get('*', function (req, res) { 
    if (fs.existsSync(__dirname + req.route.params)) 
     res.sendfile(__dirname + req.route.params); 

    if (req.route.params == '/') 
     res.sendfile(__dirname + '/index.html'); 
}); 

在此,我得到錯誤:

[email protected] ~ $ node '/home/web/www/nodechat/server.js' 
    info - socket.io started 

http.js:691 
    throw new Error('Can\'t set headers after they are sent.'); 
     ^
Error: Can't set headers after they are sent. 
    at ServerResponse.OutgoingMessage.setHeader (http.js:691:11) 
    at ServerResponse.res.setHeader (/usr/local/lib/node_modules/express/node_modules/connect/lib/patch.js:63:22) 
    at SendStream.type (/usr/local/lib/node_modules/express/node_modules/send/lib/send.js:456:7) 
    at SendStream.send (/usr/local/lib/node_modules/express/node_modules/send/lib/send.js:348:8) 
    at /usr/local/lib/node_modules/express/node_modules/send/lib/send.js:323:10 
    at Object.oncomplete (fs.js:107:15) 

當我從錯誤理解的問題是,res.sendfile可只發送一次...基本上我需要自動加載全部JSCSS

回答

1

取而代之的是:

app.get('*', function (req, res) { 
    ... 
}); 

使用此:

app.use(express.static(__dirname)); 
+0

已經解決這個問題,但還是感謝! – Kin

相關問題