一个简单的节点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) })