NodeJS 无法获取CSS文件

bxfogqkk  于 12个月前  发布在  Node.js
关注(0)|答案(3)|浏览(78)

我的目录是这样设置的:

app.js
views     
  home.html
  css
    style.css

我的家庭档案是这样的:

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

</body>
</html>

我的app是这样的:

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文件无法加载。

relj7zay

relj7zay1#

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

app.use(express.static(path.join(__dirname, 'public')));

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

app.js
views
  home.html
public
  css
    style.css

并且不要忘记需要path模块

var path = require('path')
pinkon5k

pinkon5k2#

在我的一个应用程序中,我在这个文件结构中有这些相关文件:

/
index.js
  /public
    /stylesheets
      main.css
  /views
    /partials
      header.ejs

index.js包括app.use(express.static(path.join(__dirname, '/public')));注意/public
头文件.ejs部分包含<link rel='stylesheet' type='text/css' href='/stylesheets/main.css' />注意缺少public,这是中间件隐含的。
在您的示例中,静态文件的当前目录与保存静态文件的目录不匹配。

xcitsw88

xcitsw883#

试试这个:

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

这也许能解决问题。

相关问题