【问题标题】:Problem on hosting webpage on localhost using nodejs使用nodejs在本地主机上托管网页的问题
【发布时间】:2021-11-24 13:43:01
【问题描述】:

我已经制作了一个节点程序,它在 localhost:3000 上托管 html 文件以及其他类型的文件(如果有的话)。一切正常,但由于某种原因,当我输入错误的路径名时,404.html 不会弹出。 这是下面给出的节点程序:

https://pastebin.com/4vtSQsva

我在项目的根目录中有一个名为 public 的文件夹,那里存放了所有托管的 html css js 和其他文件。 请帮帮我。

【问题讨论】:

  • 代码越简单越好。尝试使用 switch 语句而不是developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 它将帮助您解决问题
  • 谢谢你,但它似乎对我没有帮助。此外,由于其他一些原因,我想保持当前的代码形式(请不要个人认为)。如果您能说明为什么没有加载 404 会很好,仅供参考

标签: node.js localhost


【解决方案1】:

我认为你应该替换这个:

if (!exists) {
    res.statusCode = 404;
    filePath = path.resolve('./404.html');
    res.setHeader('Content-Type', 'text/html');
    fs.createReadStream(filePath).pipe(res);
    return;
}

有了这个:

if (!exists) {
    res.statusCode = 404;
    filePath = path.resolve('./404.html');
    fs.readFile(filePath, function (err, contents) {                        
        if (!err) {                            
             res.writeHead(404, { 'Content-Type': 'text/html' });
             res.end(contents);
        } else {                            
             console.log(err);
        };
    });
 }

您的 404.html 文件是否放在 /public 文件夹中?

如果是的话应该是filePath = path.resolve('./public/404.html');

【讨论】:

  • 感谢您的回答,但这似乎并没有解决我的问题。 Here你可以找到错误的录屏
  • @AarushPaul 可以在代码沙箱中重新创建您的代码。我不知道你的文件结构,所以可能是它引起的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
相关资源
最近更新 更多