Node.js 无法获取CSS文件

Node.js 无法获取CSS文件,node.js,express,Node.js,Express,我的目录设置如下所示: app.js vews home.html css style.css <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> </body> </html> var io

我的目录设置如下所示:

app.js
vews
  home.html
  css
    style.css
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>

</body>
</html>
var io   = require('socket.io'),
    url  = require('url'),
    sys  = require('sys'),
    express = require('express'),
    http=require('http');

var app = express();
var server = http.createServer(app);
var socket = io.listen(server);

app.engine('.html', require('ejs').__express);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');

app.get('/', function(req, res){
    res.render('home');
});

app.listen(4000);
sys.puts('server running ' + 'now ' + Date.now());
我的主文件如下所示:

app.js
vews
  home.html
  css
    style.css
<html>
<head>
  <title></title>
  <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>

</body>
</html>
var io   = require('socket.io'),
    url  = require('url'),
    sys  = require('sys'),
    express = require('express'),
    http=require('http');

var app = express();
var server = http.createServer(app);
var socket = io.listen(server);

app.engine('.html', require('ejs').__express);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');

app.get('/', function(req, res){
    res.render('home');
});

app.listen(4000);
sys.puts('server running ' + 'now ' + Date.now());
问题是当我运行应用程序时,无法加载css文件。

尝试以下操作:

<link rel="stylesheet" type="text/css" href="/css/style.css" />


这可能会解决问题。

因为.css文件是静态文件,所以您必须将它们提供给客户端。但是,您不能将静态文件作为express中间件提供。将以下中间件添加到您的express应用程序中,并将
css
文件夹移动到
public
目录下(您应该创建一个
public目录

因此,最终的目录结构应该如下所示

app.js
views
  home.html
public
  css
    style.css
不要忘记需要
路径
模块

 var path = require('path')

在我的一个应用程序中,我的文件结构中包含以下相关文件:

/
index.js
  /public
    /stylesheets
      main.css
  /views
    /partials
      header.ejs
index.js
包括
app.use(express.static(path.join(uu dirname,“/public”))
注意
/public

header.ejs部分包括
请注意,缺少public,这是由中间件暗示的


在您的示例中,静态文件的当前目录与您保存静态文件的位置不匹配。

在您运行代码的Web服务器上,此目录是否也位于此结构中?我不太确定您的问题您是否在服务器上运行代码?你的目录结构在Web服务器上是一样的吗?我正在本地开发应用程序为什么
?为什么不标记?为什么不投票?这解决了我的问题。应该使用
/css/style.css
而不是
css/style.css
@dgknca这并没有回答实际问题,而是回答了另一个问题。查看给定的文件树。express.js框架处理HTTP请求,因此它应该知道Web应用程序的静态文件位于何处。默认情况下,没有这样的文件夹。使用
express.static
。请在此处阅读:这是否适用于
主体解析器
模块?我可以使用多个
express.static
路径吗?例如,一个用于公共(.html文件),一个用于样式(.css文件)?