发送html文件的Node.js不加载链接文件(css,js)

时间:2013-04-13 22:14:40

标签: node.js extjs

我正在尝试使用Node.js服务器创建az ExtJS应用程序。我的服务器代码目前如下所示:

var express = require('express');

var app = express();

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

app.get('/employees', function(req, res){
console.log("hello");
});

app.listen(3000);

当我在浏览器中打开localhost:3000时,html文件已加载,但不正确。检查firebug我看到它找不到html中的链接文件。例如

"NetworkError: 404 Not Found - http://localhost:3000/ext-4/ext-debug.js".

这很合乎逻辑,因为该URL上不存在该文件。我的问题是如何解决这个问题,所以它可以在我的文件系统上找到每个链接文件。

我显然做错了什么或遗漏了什么,我在节点上是全新的。

2 个答案:

答案 0 :(得分:5)

看起来你不是在配置Express'静态文件处理程序。

尝试添加此代码:

app.configure(function() {
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(express.bodyParser());
    app.use(express.logger("short"));
});

它会像var app = ...之后一样:

var express = require('express');

var app = express();
app.configure(function() {
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(express.bodyParser());
    app.use(express.logger("short"));
});

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

app.get('/employees', function(req, res){
    console.log("hello");
});

app.listen(3000);

然后将静态文件放在./public目录下。

答案 1 :(得分:3)

您需要使用一些静态中间件,例如:http://www.senchalabs.org/connect/static.html

注意表达继承连接,所以你可以

app.use(express.static(filedir));

或完整的事情:

var express = require('express');

var app = express();

app.use(express.static(filedir));

app.get('/employees', function(req, res){
  console.log("hello");
  res.send("hello");
});

app.listen(3000);