这是我的server.js文件,当我尝试使用Express.js设置服务器时,我收到下面提到的错误
var express = require('express');
var app = express();
var PORT = process.env.PORT || 3000;
app.all('/*', function(req, res) {
res.send('<!DOCTYPE html> <head> <title> Todo App </title> </head> <body> <h1>This is a Todo App </h1> </body> </html>');
});
app.listen(PORT, function() {
//callback
console.log('Server running on ' + PORT);
});
这是我得到的错误
(function (exports, require, module, __filename, __dirname) { ??v
^
SyntaxError: Invalid or unexpected token
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:528:28)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
答案 0 :(得分:0)
在改进格式化并删除代码中的“”后,运行这堆代码没有问题。
var express = require('express');
var app = express();
var PORT = process.env.PORT || 3000;
app.all('/*', function(req, res) {
res.send('\
<!DOCTYPE html>\
<head>\
<title> Todo App </title>\
</head>\
<body>\
<h1>This is a Todo App </h1>\
</body>\
</html>\
');
});
app.listen(PORT, function() {
//callback
console.log('Server running on ' + PORT);
});
注意:您声明了PORT
变量,但您在port
中使用了app.listen()
变量。
答案 1 :(得分:0)
您的问题很可能是基于多行HTML字符串的格式。尝试发送更简单的内容,例如'hello'
,以确保其有效。然后通过一次添加几个标记直到找到错误的位置来继续前进。
app.get('/', function(req, res) {
res.send('hello');
});
最后,您应该考虑使用像Pug这样的模板系统或使用res.sendFile()
来返回单独的html文件,而不是尝试构建原始HTML字符串。你需要对原始字符串进行转义将非常难以调试,因为它们只是字符串,所以javascript引擎不知道它们会发生什么样的错误。
app.get('/', function(req, res) {
// __dirname will resolve to your project folder
res.sendFile(path.join(__dirname + '/index.html'));
});
答案 2 :(得分:0)
我遇到了同样的问题。它是由文件编码引起的。我的意思是我通过powershell命令server.js
创建'' >> server.js
文件然后我看到了这个错误但是当我用IDE创建文件时,相同的内容错误消失了。
答案 3 :(得分:0)
我想回答您的问题,我们需要有关您的环境的更多信息以及您正在使用的内容版本:
node -v # v6.11.1
npm -v # 3.10.10
以下是我在Mac OS和bash上所做的文字步骤,并且成功
$ mkdir test-express
$ cd test-express
$ npm install express
$ cat <<EOF > index.js
var express = require('express');
var app = express();
var PORT = process.env.PORT || 3000;
app.all('/*', function(req, res) {
res.send('<!DOCTYPE html> <head> <title> Todo App </title> </head> <body> <h1>This is a Todo App </h1> </body> </html>');
});
app.listen(PORT, function() {
//callback
console.log('Server running on ' + PORT);
});
EOF
$ node index.js
Server running on 3000
卷曲:
$ curl localhost:3000
<!DOCTYPE html> <head> <title> Todo App </title> </head> <body> <h1>This is a Todo App </h1> </body> </html>