2016-02-29 77 views
0

我想将静态文件放在我的公共文件夹,如HTML,CSS和JS文件,但他们不会获取到获取网址('/')。 这里是我的文件夹结构为什么我的公共文件夹不能在我的NodeJS应用程序中为'/'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; 
} 
+0

'assets /'来自哪里HTML? – Marty

+0

你的问题不清楚,你用''表示什么意思,但是他们不会去get url('/')'。你的意思是说,如果你把以你的主机为前缀的'assets/style.css'放到浏览器的地址栏中,那么你看不到你的css文件的内容?什么信息显示给你呢? –

+0

@ t.niese他忘了使用双引号,以便浏览器不会加载CSS文件。 –

回答

0

可以重命名 “公” 为 “资产”,然后用.. 。

app.use(express.static('assets')); 
0

There syn您的HTML语句中链接到CSS文件的税务错误。您忘记将值用双引号括起来。如果您正在使用ES6支持Node.js的,那么你可以使用反单引号(``),以更好地格式化内嵌HTML代码像

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

请使用以下格式

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>` 
     ); 
}); 
+0

在这种情况下它们是可选的:[W3C:4.4。属性](https://www.w3.org/TR/html-markup/syntax.html#syntax-attributes)'未加引号的属性值具有以下限制:不得包含任何文字空格字符,不得包含任何“”,“”,“=”,“>”,“<”或“\'”,字符不能为空字符串[012]''''''''''' –

2

您的问题是,因为

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

等于

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

如果不使用引号,则值由以下字符之一终止:"'=><,或`(见W3C: 4.4. Attributes有详细介绍)。至于你的价值是由>终止价值是stylesheet/

因为你的link的是stylesheet/而不是stylesheet这就是为什么没有加载样式表。

因此,无论你有stylesheet/之间添加空格:

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

,或者你需要使用引号。

+0

这解释了这个错误。做得好 –

相关问题