2016-02-05 75 views
0

我正在使用Express和socket.io来编写应用程序,但我的服务器找不到静态文件的位置。我意识到这个问题已经被多次提出,但是没有一个建议的解决方案为我工作。我尝试过使用express.static()来引用公用文件夹的不同方法,或者重新排列代码结构,但仍然没有运气。快递服务器不提供静态文件

代码结构:

/node_modules 
/public 
    /css 
     index.css 
    /html 
     index.html 
    /js 
/src 
    /server 
     /models 
index.js 
package.json 

index.js:

// Get all modules needed 
var express   = require('express'), 
    http    = require('http'), 
    bodyParser  = require('body-parser'), 
    logger   = require('logger'), 
    mongoose  = require('mongoose'), 
    io    = require('socket.io'), 
    path   = require('path'), 
    methodOverride = require('method-override'), 
    User = require('./src/server/models/user'); 

// Connect to MongoDB 
mongoose.connect('mongodb://localhost:27017/' + name); 
var db = mongoose.connection;*/ 
var uristring = 
    process.env.MONGOLAB_URI || 
    process.env.MONGOHQ_URL || 
    'mongodb://localhost/HelloMongoose'; 

mongoose.connect(uristring, function (err, res) { 
    if (err) { 
     console.log ('ERROR connecting to: ' + uristring + '. ' + err); 
    } else { 
     console.log ('Succeeded connected to: ' + uristring); 
    } 
}); 

// Set up 
var app = express(); 
var server = http.Server(app); 
var ioServer = io(server); 
app.use(bodyParser.json({})); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(methodOverride()); 
app.use(bodyParser()); 

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

// Connect to a socket 
ioServer.on('connection', function(socket){ 
    // do something 
}) 

回答

1

你需要服务包含index.html文件的目录:

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

您需要确保指定的路线是/public/html而不是./public/html

虽然这可以解决问题,但我建议您将index.html文件放在您的public目录的根目录下。这是推荐的代码结构:

/node_modules 
/public 
    /css 
     index.css 
    /js 
    index.html 
/src 
    /server 
     /models 
index.js 
package.json 
+0

谢谢!我试过“./public/html”,但没有真正的工作。所以我把index.html移到了public的根目录,并尝试了“./public”,仍然没有奏效。这里可能发生了什么? – HoneyWine

+0

我已经更新了答案。我对我的解决方案中的错误表示歉意。 – gnerkus

+0

工作就像一个奇迹...非常感谢! – HoneyWine