You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js搭建HTML文件服务报错站点无法访问应如何解决

报错诱因

你遇到的类型错误核心原因是没有处理fs.readFile的读取异常场景:
当./samplehtml.html文件读取失败时(常见原因包括文件不存在、相对路径匹配错误、文件读取权限不足),回调函数的err参数会携带错误信息,data参数会是undefined。此时你直接将undefined传入res.write()方法,而该方法要求入参必须是字符串、Buffer或Uint8Array类型,直接触发类型错误导致HTTP服务崩溃,浏览器访问时就会提示站点无法访问。

修复方案

修改逻辑主要包含两点:

  • 新增文件读取错误判断分支,异常时返回对应错误响应,避免服务直接崩溃
  • 使用绝对路径定位HTML文件,避免相对路径受Node.js进程启动目录影响导致匹配失败

修改后的完整代码如下:

var http = require('http');
var fs = require('fs');
var path = require('path');

http.createServer(function(req, res){
    // 用__dirname拼接绝对路径,保证读取的是当前脚本同目录下的samplehtml.html
    const filePath = path.join(__dirname, 'samplehtml.html');
    fs.readFile(filePath,function(err,data){
        if (err) {
            // 读取失败返回500错误
            res.writeHead(500, {'Content-Type': 'text/plain;charset=utf-8'});
            res.end('文件读取失败:' + err.message);
            return;
        }
        res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
        res.write(data);
        res.end();
    });
    
}).listen(7000, () => {
    console.log('服务已启动,访问 http://localhost:7000 查看');
});

修改后请确认samplehtml.html文件和当前运行的js脚本放在同一目录下即可正常访问。

内容的提问来源于stack exchange,提问作者Riya Babu M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:36:03