Node.js发送HTML文件时无法加载链接的文件(css,js)

4

我正在尝试制作一个使用Node.js服务器的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".

这很合理,因为该网址上不存在该文件。我的问题是如何解决此问题,以便可以在我的文件系统中找到每个链接的文件。

显然我做错了什么或者遗漏了什么,因为我对node还很陌生。

2个回答

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目录下。


路径合并(path.join)无法正常工作,报错“path未定义”。 但是,我修改了那部分以适应我的需求,并且完美地运行了。非常感谢! - Zuller
2
var path = require('path'); - generalhenry

3

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

请注意,Express继承了Connect,因此您可以这样做。

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接