我正在尝试做我的第一个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
答案 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)
})