一个简单的节点Web服务器

我试图做我的第一个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 

你的代码有很多错误。 例如,第3行的左括号不会被closures。

它看起来像你正在尝试使用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中运行。但希望这可以让您开始更有效率的path。 如果您正在跟随教程,请find一个涵盖更新版本的Express的教​​程。

我不知道你是否已经find了你的问题的答案…但是当我看代码时,当需要快速模块时,我看到一些丢失的括号。

 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!') }) 

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

 var app = express(); 

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

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

正如你所看到的,你缺less两个括号。

我也想指出,在你的configuration函数的最后你错过了一个右括号和分号。 它应该是这样的:

 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函数,并且安装了中间件,就可以使代码运行起来。

注意您也正在使用您未包含在项目中的path进行安装,并将其添加到顶部:

 var path = require('path'); 

所以,没有任何中间件安装,这是最终的代码,与最新版本的节点和expression:

 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); 

要么

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

在快车3.x

你错过了)configuration方法结束

 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'))); }); 

你应该按照从电子书或互联网的基本教程。

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

简单的节点expression应用程序看起来很干净,容易学习

 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) })