为什么Express不能静态工作?

时间:2013-11-27 22:11:29

标签: node.js express

我刚开始学习nodejs并遇到了Express框架中我无法加载简单HTML文件的问题。

我的项目结构是这样的:

structure

在资产中有两个额外的文件夹:jscss,其中包含文件。我的server.js文件如下所示:

module.exports.start = function(config) {
    var express = require(config.MODULES_DIR + 'express'),
        app = express(),
        http = require('http'),
        server = http.createServer(app),
        io = require(config.MODULES_DIR + 'socket.io').listen(server),
        fs = require('fs'),
        path = require('path');

    server.listen(config.APP_PORT);

    // Setting static files dir to load it automatically
    app.use(express.static(config.ROOT_DIR + '/assets/'));

    console.log(config.ROOT_DIR + '/assets/');

    app.get('/', function (req, res) {
        res.sendfile(dir + 'index.html');
    });
}

config.ROOT_DIR + '/assets/'返回/Sites/node_project/assets/,这是文件的确切位置。要100%确定我运行ls /Sites/node_project/assets/并返回css js,但是当我打开http://192.168.1.109:4935时,我只得到index.html而没有js或{{1如果我尝试直接打开某个文件,例如css,我会得到css ...

我做错了什么?

更新

找到解决方案,它应该像Cannot GET /assets/css/jquery.mobile.css

1 个答案:

答案 0 :(得分:0)

尝试更像这样的事情:

/* serves all the static files */
app.get(/^(.+)$/, function(req, res){ 
    console.log("Static file request for: " + req.params);
    res.sendfile( __dirname + "/assets" + req.params[0]); 
});

这是一个很好的教程:http://www.mfranc.com/node-js/node-js-simple-web-server-with-express/