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文件)?