繁体   English   中英

节点服务器(不带 Express)不渲染图像,它继续在本地主机加载

[英]node server (without Express) does not render image and it keeps loading at localhost

在此处输入图片说明 我创建了一个没有 express 的服务器,我正在尝试在 localhost 上为一个简单的静态网页提供服务器,这是我的代码:

const fs = require('fs')
const url = require('url');
const hostname = 'localhost'
const port = 3000;
const path = require ('path');
const http = require ('http')

const server = http.createServer((req, res) => {
    if (req.url.match (/.css$/)) {
        let cssPath = path.join (__dirname, req.url)

        let cssReadStream = fs.createReadStream (cssPath, 'UTF-8')
        res.statusCode = 200;
        res.setHeader ("Content-Type", "text/css");
        cssReadStream.pipe (res)
    }
    if (req.url === "/") {
        fs.readFile("./index.html", 'UTF-8', (err, data) => {
            res.statusCode = 200;
            res.setHeader("Content-Type", "text/html");
            res.end(data);

        })
    }
    if (req.url.match (/.jpg$/)) {
        let jpgPath = path.join (req.url)
        console.log (jpgPath)
        let jpgReadStream = fs.createReadStream (jpgPath, 'UTF-8')
        res.statusCode = 200;
        res.setHeader ('Content-Type', 'image/jpg')
        jpgReadStream.pipe (res)
    }
})

server.listen (port, hostname, () => {
    console.log ('server start')
}) 

首先,它可以显示HTML和CSS,但是,localhost只是在显示HTML和CSS后继续加载。 其次,图像无法显示(instagram 图标名称 icon.jpg)。 最终结果应该是这样的:

我想这与 favicon 的事情有关,但我该如何解决?

在此处输入图片说明

您需要使用 response.send() 函数,该函数将用于发回响应

const server = http.createServer((req, res) => {
    if (req.url.match (/.css$/)) {
        let cssPath = path.join (__dirname, req.url)

        let cssReadStream = fs.createReadStream (cssPath, 'UTF-8')
        res.statusCode = 200;
        res.setHeader ("Content-Type", "text/css");
        cssReadStream.pipe (res)
        res.send("your data")
    }
    if (req.url === "/") {
        fs.readFile("./index.html", 'UTF-8', (err, data) => {
            res.statusCode = 200;
            res.setHeader("Content-Type", "text/html");
            res.end(data);
            res.send("your data")
        })
    }
    if (req.url.match (/.jpg$/)) {
        let jpgPath = path.join (req.url)
        console.log (jpgPath)
        let jpgReadStream = fs.createReadStream (jpgPath, 'UTF-8')
        res.statusCode = 200;
        res.setHeader ('Content-Type', 'image/jpg')
        jpgReadStream.pipe (res)
        res.send("your data")    
       }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM