Node.js app.js 不显示 HTML 页面,而是显示 HTML 代码

Posted

技术标签:

【中文标题】Node.js app.js 不显示 HTML 页面,而是显示 HTML 代码【英文标题】:Node.js app.js not displaying HTML page but HTML code instead 【发布时间】:2014-02-05 07:21:00 【问题描述】:

我的 app.js 在节点中出现问题,没有显示我的 html 页面,而是显示了我的 html 代码。我真的不知道该怎么做所以一些帮助将不胜感激。我希望能够从我的公共文件夹中加载 html、javascript 和 css。 这是我的 app.js 代码:

var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs")

http.createServer(function(request, response) 

var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);

path.exists(filename, function(exists) 
  if(!exists) 
    response.writeHead(404, "Content-Type": "text/plain");
    response.write("404 Not Found\n");
    response.end();
    return;


if (fs.statSync(filename).isDirectory()) filename += 'public/index.html';

fs.readFile(filename, "binary", function(err, file) 
  if(err)         
    response.writeHead(500, "Content-Type": "text/plain");
    response.write(err + "\n");
    response.end();
    return;
  

  response.writeHead(200);
  response.write(file, "binary");
  response.end();
  );
 );
).listen(process.env.PORT, process.env.IP);

console.log("Static file server running./\CTRL + C to shutdown");

【问题讨论】:

试试response.writeHead(200, 'Content-Type': 'text/html'); 根据您要加载的文件,您需要调整内容类型:例如text/htmltext/css 谢谢!即使我只添加了 respnse.writeHead(200, "Content-Type": "text/html"); 我认为它也加载了 css 和 javascript因为我能够将它链接到一个 css 文件? 哦等等不。如何显示所有 .css 文件?如果它们位于 html 页面的内部,我只能使用 css。我只是添加 response.writehead(200, "Content-Type": "text/css");在 app.js 一些随机的地方? javascript也一样? Loading basic HTML in Node.js的可能重复 【参考方案1】:

如果您尝试,您没有指定内容类型:

fs.readFile(filename, "binary", function(err, file) 
if(err)         
    response.writeHead(500, "Content-Type": "text/plain");
    response.write(err + "\n");
    response.end();
    return;
  

  response.writeHead(200, 'Content-Type': 'text/html');
  response.write(file, "binary");
  response.end();
  );
 );
).listen(process.env.PORT, process.env.IP);

应该可以。如果您想在 html 中显示错误页面,您还需要更新该内容类型。

【讨论】:

谢谢!在 html 中显示错误页面会很棒。我知道如何在 response.write();但是我如何将它引导到一个让我们说 500.html 错误页面?

以上是关于Node.js app.js 不显示 HTML 页面,而是显示 HTML 代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 在 html 表中显示 mysql

vue node.js 安装

使用 express.js 在 node.js 中提供 html 的最佳实践是啥?

如何快速搭建node.js项目,app.js详解

如何声明一个node.js变量,以后可以在我的js文件中使用?

nodejs 批处理运行 app.js