如何使用Express JS创建简单的HTML服务器

9

我是一个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应用程序。我想要像Apache一样运行的express.js http服务器,可以从指定的文件夹首先提供静态html页面。 有人能帮我吗?建议一篇详细解释步骤的好文章,因为我是初学者。


2
你是否按照这里的步骤进行了操作:http://expressjs.com/guide.html - Mike Robinson
1
我认为你不需要安装express-generator,你应该运行npm install -g express,然后尝试加载它。 - Stevo Perisic
我也安装了express 4.2,但是我看到express 4.x还需要安装express-generator。 - Zsoca
1
“httpsrv.js”是从哪里来的?它不遵循Express 4.x的约定。看起来像是来自旧的3.x示例。Express生成器会创建“app.js”,导出所需的大部分内容,“npm start”启动服务器。看起来你没有使用生成器,或者你使用了它,但忽略了输出? - Matthew Bakaitis
3个回答

23

如果您只是想从名为“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来启动服务器。


2
现在它几乎好了,但是当我启动服务器并尝试在浏览器中查看时,我收到此消息:“无法获取/”。我猜这只是路径问题。我的JavaScript服务器文件放置在相同的“/ public”目录中,我想要提供它是否有问题? - Zsoca
1
将其更改为 path.join(__dirname, '/public') - Dan
如何在 https 和 http 上同时运行应用程序? - Jitendra Pancholi
@JitendraPancholi 这取决于情况,但你可以使用内置的 https 模块来实现。如果需要更多指导,我很乐意提供示例。 - Evan Hahn
谢谢,我已经完成了。 - Jitendra Pancholi

12

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

npm install express

尝试将“public”去掉

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

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

它工作得很好。


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

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


你甚至没有回答问题。 - gaitat
1
他/她的要求是设置一个简单的服务器,用于从文件夹中提供静态页面;这个软件包正好可以做到这一点。您无需使用像Express这样的框架来实现此目的。 - garryp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接