一个简单的Node Web Server

时间:2015-05-06 04:40:25

标签: node.js webserver

我正在尝试做我的第一个node.js web服务器(本地)但是我似乎无法启动它,下面是代码和错误消息。

var app = require('express');

app.configure(function(){
    app.set('port', 8080);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, '/public')));
}

app.listen(8080);

错误消息

app.listen(8080);
^^^
SyntaxError: Unexpected identifier
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

4 个答案:

答案 0 :(得分:1)

您的代码中有很多错误。例如,第3行的左括号永远不会关闭。

看起来您正在尝试使用Express中目前已弃用的一些内容。

以下是修改后的代码以使用Express 3.20.2。您将收到一对弃用警告,但代码可以正常工作。

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

app.set('port', 8080);
app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
app.use(express.bodyParser());
app.use(express.static(path.join(__dirname, '/public')));

app.listen(8080);

以上代码将在Express 4中按原样运行。但希望这可以让您开始更高效的路径。如果您正在按照教程进行操作,请找一个涵盖Express的更新版本的教程。

答案 1 :(得分:1)

我不知道你是否已经找到了问题的答案......但是当我查看代码时,我看到一些需要快速模块时缺少括号。

var app = require('express');

以下是快递网站

的示例“Hello World”摘录
var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

他们有两行代码,首先将express模块​​作为变量“express”包含在项目中。然后,他们初始化一个新的快速实例(不是真的,但几乎相同):

var app = express();

然后他们调用与“app”相关的所有功能。上例中的两行代码与这一行代码相同:

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

正如您所看到的,您缺少两个括号。

我还想指出你在配置函数的最后缺少一个右括号和分号。它应该是这样的:

app.configure(function(){
    app.set('port', 8080);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, '/public')));
});

所以......这是最终的代码:

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

app.configure(function(){
    app.set('port', 8080);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, '/public')));
});

app.listen(8080);

遗憾的是,logger和bodyParser中间件不再与express捆绑在一起,因此您必须单独安装它们。 app.configure也已过时,因此如果完全删除configure函数并安装中间件,则可以使代码生效。

注意您还使用未包含在项目中的路径安装它并将其添加到顶部:

var path = require('path');

因此,在没有任何中间件安装的情况下,这是最新版本的节点和表达的最终代码:

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

app.set('port', 8080);
app.use(express.static(path.join(__dirname, '/public')));

app.listen(8080);

OR

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

app.set('port', 8080);
app.use(require('express').static(path.join(__dirname, '/public')));

app.listen(8080);

答案 2 :(得分:0)

快递3.x

您在配置方法

结束时错过了)
app.configure(function(){
    app.set('port', 8080);
    app.use(express.logger('dev'));  /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
    app.use(express.static(path.join(__dirname, '/public')));
});

答案 3 :(得分:0)

你应该遵循电子书或互联网的基本教程。

例如,https://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm

简单节点表达应用程序看起来非常干净且易于学习

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

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(8081, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)
})