我想运行一个非常简单的HTTP服务器。对example.com的每个GET请求都应该得到index.html,但作为一个常规的HTML页面(即,与阅读普通网页时的体验相同)。

使用下面的代码,我可以读取index.html的内容。我如何服务index.html作为一个普通的网页?

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(index);
}).listen(9615);

下面的一个建议很复杂,需要我为我想使用的每个资源(CSS、JavaScript、图像)文件写一个get行。

我如何能提供一个单一的HTML页面与一些图像,CSS和JavaScript?


当前回答

编辑:

Node.js示例应用Node Chat拥有你想要的功能。 在它的readme。textfile中 3.步伐就是你要找的。

step1 创建一个在端口8002上响应hello world的服务器 步骤2 创建一个index.html并服务它 步骤3 介绍util.js 更改逻辑,以便为任何静态文件提供服务 如果找不到文件,显示404 第四 添加jquery-1.4.2.js 添加client.js 将index.html更改为提示用户昵称

这是server.js

这是util.js

其他回答

创建一个简单的Node.js Web服务器,并从一个文件异步服务一个HTML页面

创建我的第一个node.js服务器时,我找到了一个简单而有效的方法来做到这一点。

我们可以在开始时加载一次HTML,而不是为每个请求加载HTML。然后返回我们在启动时加载的数据。

const host = "localhost";
const port = 5000;
const http = require("HTTP");
const fs = require("fs").promises;

let htmlFile;
const reqListenerFunc = function (req, resp) {
    resp.setHeader("Content-Type", "text/html");
    resp.writeHead(200);
    resp.end(htmlFile);
};
const simpleServer = http.createServer(reqListenerFunc);

// // Using Arrow function directly
// const simpleServer = http.createServer( (req, resp) => {
//     resp.setHeader("Content-Type", "text/html");
//     resp.writeHead(200);
//     resp.end(htmlFile);
// });

fs.readFile(__dirname + "/index.html")
    .then(content => {
        htmlFile = content;
        simpleServer.listen(port, host, () => {
            console.log(`Node.js web server is running on http://${host}:${port}`);
        });
    })
    .catch(err => {
        console.error(`Cannot read index.html file. <br> Error: ${err}`);
        process.exit(1);
    });

阅读更多信息:https://www.digitalocean.com/community/tutorials/how-to-create-a-web-server-in-node-js-with-the-http-module

这基本上是连接版本3的公认答案的更新版本:

var connect = require('connect');
var serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic(__dirname, {'index': ['index.html']}));
app.listen(3000);

我还添加了一个默认选项,以便index.html作为默认选项。

步骤1(在命令提示符[I hope you cd TO YOUR FOLDER]内):npm install express

步骤2:创建一个server.js文件

var fs = require("fs");
var host = "127.0.0.1";
var port = 1337;
var express = require("express");

var app = express();
app.use(express.static(__dirname + "/public")); //use static files in ROOT/public folder

app.get("/", function(request, response){ //root dir
    response.send("Hello!!");
});

app.listen(port, host);

请注意,您也应该添加WATCHFILE(或不使用demon)。以上代码仅用于一个简单的连接服务器。

步骤3:node server.js或nodemon server.js

现在有一个更简单的方法,如果你只是想主机简单的HTTP服务器。 NPM install -g http-server

打开目录,输入http-server

https://www.npmjs.org/package/http-server

编辑:

Node.js示例应用Node Chat拥有你想要的功能。 在它的readme。textfile中 3.步伐就是你要找的。

step1 创建一个在端口8002上响应hello world的服务器 步骤2 创建一个index.html并服务它 步骤3 介绍util.js 更改逻辑,以便为任何静态文件提供服务 如果找不到文件,显示404 第四 添加jquery-1.4.2.js 添加client.js 将index.html更改为提示用户昵称

这是server.js

这是util.js

你可以在shell中输入这些

npx serve

回购:https://github.com/zeit/serve。