簡體   English   中英

為什么我的公用文件夾沒有在NodeJS應用程序中獲取“ /” URL的文件?

[英]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/

因此, linkrel性是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM