通过express.js

时间:2016-10-20 06:27:08

标签: javascript node.js express

这是我的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

4 个答案:

答案 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>