MST
星途 面试题库

面试题:Node.js构建静态资源服务器中文件系统模块的关键用法

在使用Node.js的文件系统构建静态资源服务器时,需要读取文件并将其内容发送给客户端。请描述如何使用fs模块读取文件,并且处理可能出现的错误,同时说明怎样将读取到的文件内容作为HTTP响应发送给客户端。
50.5万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. 使用fs模块读取文件并处理错误
    • 在Node.js中,可以使用fs.readFile方法来读取文件。它是一个异步操作,接受文件名、编码格式和回调函数作为参数。
    • 回调函数的第一个参数是错误对象,如果读取文件过程中出现错误,该对象会被赋值,否则为null
    • 示例代码如下:
const fs = require('fs');
const path = require('path');

const filePath = path.join(__dirname, 'your - file - name.txt');

fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) {
        // 处理错误
        console.error('读取文件错误:', err);
        return;
    }
    // data就是读取到的文件内容
    console.log('文件内容:', data);
});
  1. 将读取到的文件内容作为HTTP响应发送给客户端
    • 首先需要使用http模块创建一个HTTP服务器。
    • 当服务器接收到请求时,读取文件内容,然后将内容作为响应发送给客户端。
    • 示例代码如下:
const http = require('http');
const fs = require('fs');
const path = require('path');

const server = http.createServer((req, res) => {
    const filePath = path.join(__dirname, 'your - file - name.txt');

    fs.readFile(filePath, 'utf8', (err, data) => {
        if (err) {
            res.statusCode = 500;
            res.end('读取文件错误');
            return;
        }
        res.setHeader('Content - Type', 'text/plain');
        res.end(data);
    });
});

const port = 3000;
server.listen(port, () => {
    console.log(`服务器运行在端口 ${port}`);
});
  • 在上述代码中:
    • http.createServer创建一个HTTP服务器,回调函数(req, res)处理每个请求。
    • fs.readFile读取文件,如果出错,设置响应状态码为500并返回错误信息。
    • 如果读取成功,设置响应头Content - Typetext/plain(根据文件类型调整,比如text/html等),然后将读取到的文件内容作为响应体发送给客户端。