使用 Nodejs 提供静态文件

时间:2021-02-06 15:02:51

标签: node.js

我只是想创建一个 node js 服务器,它从我的文件夹中提供静态文件

const http = require('http');
const fs = require('fs');

const server = http.createServer((req,res)=>{
const readStream = fs.createReadStream('./static/index.html');
res.writeHead(200,{'Content-type':'text/html'});
readStream.pipe(res);
res.end();
});

server.listen(5000,()=>{
console.log("server running at port 5000");
 })

我有一个名为 static 的文件夹,其中包含一个名为 index.html 的文件,其中包含简单的 html 代码。 服务器运行成功,但没有发送响应

2 个答案:

答案 0 :(得分:0)

尝试使用 fs.readFile 而不是 fs.createReadStream

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
    fs.readFile(__dirname + '/static/index.html', (err, data) => {
        if (err) {
            res.writeHead(404);
            res.end(JSON.stringify(err));
            return;
        }

        res.writeHead(200);
        res.end(data);
    })
});

server.listen(5000, () => {
    console.log("> server on 5000");
});

答案 1 :(得分:0)

如评论部分所述,.createReadStream will end the stream automatically when the end of the file is reached 所以我们只需要删除 res.end()

const http = require('http');
const fs = require('fs');

const server = http.createServer((req,res)=>{
const readStream = fs.createReadStream('./static/index.html');
res.writeHead(200,{'Content-type':'text/html'});
readStream.pipe(res);
res.end();
});

server.listen(5000,()=>{
console.log("server running at port 5000");
})
相关问题