[英]Why isn't my public folder fetching files for '/' URL in my NodeJS App?
我试图将静态文件放置在我的公共文件夹中,例如html,css和js文件,但它们不会获取到获取URL('/')。 这是我的文件夹结构
app.js
node_modules
--express
package.json
public
--style.css
我的应用是:
var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
app.use('/assets', express.static(__dirname + '/public'));
app.get('/', function(req, res){
res.send('<html><head><link href=assets/style.css type=text/css rel=stylesheet/></head><body><h1>Hello World</h1></body></html>');
});
app.get('/person/:id', function(req, res){
res.send('<html><head></head><body><h1>Person: ' + req.params.id + '</h1></body></html>');
});
app.get('/api', function(req, res){
res.json({ firstname: 'John', lastname: 'Doe' });
});
app.listen(port);
样式代码为:
style.css:
body {
font-family: Arial, Helvetica, sans-sarif;
}
你的问题是,因为
<link href=assets/style.css type=text/css rel=stylesheet/>
等于
<link href=assets/style.css type=text/css rel="stylesheet/">
如果不使用引号,则该值将以下列字符之一终止: "
, '
, =
, >
, <
或`
(请参见W3C:4.4。属性以获取更多详细信息)。通过>
值是stylesheet/
。
因此, link
的rel
性是stylesheet/
而不是stylesheet
,这就是为什么不加载样式表的原因。
因此,要么必须在stylesheet
和/
之间添加一个空格:
<link href=assets/style.css type=text/css rel=stylesheet />
或者您需要使用引号。
您可以将“ public”重命名为“ assets”,然后使用...
app.use(express.static('assets'));
HTML语句中存在链接到CSS文件的语法错误。 您忘记将值括在双引号中。
请使用以下格式:
<link rel="stylesheet" type="text/css" href="assets/style.css">
如果您正在使用支持Node.JS的ES6,则可以使用back-ticks(``)更好地格式化内联HTML代码,例如:
app.get('/', function(req, res){
res.send(`
<html>
<head>
<link rel="stylesheet" type="text/css" href="assets/style.css">
</head>
<body>
<h1>Hello World</h1>
</body>
</html>`
);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.