如何使用 express js 创建一个简单的 html 服务器

Posted

技术标签:

【中文标题】如何使用 express js 创建一个简单的 html 服务器【英文标题】:How to create a simple html server using express js 【发布时间】:2014-08-22 10:55:48 【问题描述】:

我是 node.js 的新手,我想创建一个简单的 express.js 静态文件服务器,但我遇到了一些问题。 我已经像这样在全球范围内安装了 express.js 4.2:

npm install  -g express-generator

我在 httpsrv.js 中有这段代码:

var http = require('http');
var express = require('express');
var app = express();

app.use('/', express.static(__dirname + '/public'));
app.listen(3000, function()  console.log('listening'));

我不确定是否可以我猜这还不够,但我无法运行它失败并出现错误:找不到模块'express'。

我想创建一个简单的 http 服务器,它可以从特定文件夹(例如“\public”)提供服务,并且我使用的是 .html 语言。我在互联网上发现了很多废话,我不想使用这个 .jade 的东西,我不想用 express 等创建一个空的 web 应用程序。我想要 express.js http 服务器,它可以像 Apache 一样运行并且可以首先从指定的文件夹提供静态 html 页面。 任何人都可以帮助我,推荐一篇逐步解释的好文章,因为我是初学者。

【问题讨论】:

您是否按照这里的步骤操作:expressjs.com/guide.html 我不认为你需要安装 express-generator,你应该运行 npm install -g express,然后尝试加载它。 我也安装了 express 4.2,但我读过 express 4.x 也需要这个 express-generator。 ...httpsrv.js 是从哪里来的?它不遵循 express 4.x 约定。看起来它来自较旧的 3.x 示例。 express 生成器创建app.js 导出大部分需要的内容,npm start 启动服务器。看起来您没有使用生成器,或者您使用了它并且...忽略了输出? 【参考方案1】:

如果您只是想从名为“public”的目录中提供静态文件,您可能会遇到这样的应用:

var path = require('path');
var express = require('express');

var app = express();

var staticPath = path.join(__dirname, '/public');
app.use(express.static(staticPath));

app.listen(3000, function() 
  console.log('listening');
);

您需要确保已安装 Express。您可能会在与上述 javascript 文件相同的目录中运行 npm install express --save。一切准备就绪后,您将运行 node the_name_of_the_file_above.js 来启动您的服务器。

【讨论】:

现在差不多好了,但是当我启动服务器并尝试在浏览器中查看时,我收到以下消息:“Cannot GET /”。我想它只是一些路径问题。我的 javascript 服务器文件放在同一个“/public”目录中,我想提供什么服务有问题吗? 改成path.join(__dirname, '/public') 如何在 https 和 http 上运行应用程序? @JitendraPancholi 这取决于,但您可以使用内置的 https 模块来执行此操作。如果您需要更多指导,很高兴找到示例。 谢谢我现在做了。【参考方案2】:

首先安装 express 模块而不是 express-generator

npm install express

试试这个删除公共

var express = require('express');
var app = express();

app.use('/', express.static(__dirname));
app.listen(3000, function()  console.log('listening'));

一切正常。

【讨论】:

【参考方案3】:

这个问题甚至不需要任何代码或框架;从npm 安装 http-server,在命令提示符下导航到文件夹并运行以下命令:

http-server

它会启动一个轻量级的 http 服务器并立即从文件夹中提供静态内容,可以使用 http://localhost 进行查看

【讨论】:

你甚至没有回答这个问题。 他/她的要求是设置一个简单的服务器来提供来自文件夹的静态页面;这个包正是这样做的。您不需要为此使用 Express 之类的框架。

以上是关于如何使用 express js 创建一个简单的 html 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Express.js 将用户重定向到不同的网页? (是的,我尝试过使用`redirect`方法)[重复]

如何在我的简单 Express 应用中使用 Node.js 集群?

如何使用 Express / Node.JS 创建可在所有视图中访问的全局变量?

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?

使用 express js 和 vuejs 提供不同的本地 json 数据

express.js 中的全局函数?