ECMASCRIPT中的反引号:意外的令牌非法

时间:2016-09-03 08:11:12

标签: node.js ecmascript-6 template-strings

我正在ExpressJs应用程序中编写一个小测试代码。代码如下:

var express = require('express');
var app = express();
var dataFile = require('./data/data.json');


app.set('port', process.env.PORT || 3000);

app.get('/', function(req, res) {
  var info = '';
  dataFile.speakers.forEach(function(item) {
    info += `<li>
      <h2>${item.name}</h2>
      <p>${item.summary}</p>
    </li>
    `;
  });
  res.send(`
    <h1>My Meetups</h1>
    ${info}
    `);
});

var server = app.listen(app.get('port'), function() {
  console.log('Listening on port ' + app.get('port'));
});

当我尝试执行命令

  

node app / app.js

在Git bash终端中,我收到以下错误:

> E:\expressjs\app\app.js:11
>     info += `<li>
>             ^ SyntaxError: Unexpected token ILLEGAL
>     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:935:3

我尝试了什么:

  1. 检查节点版本:使用节点0.10.37
  2. 尝试使用--harmony选项运行node命令,建议:相同错误
  3. 尝试访问ECMA兼容性表网站:无法搜索正确的信息
  4. 使用Atom编辑器

    我怀疑:Node和ECMA的版本不兼容

    有人可以帮忙吗?

    由于

1 个答案:

答案 0 :(得分:3)

试试这个网站。它显示了nodeJS中实现的所有es6功能

http://node.green/

我怀疑你是使用非常旧版本的节点(几乎所有功能都在节点0.10中出错)。

尝试升级到node6,一切正常。

希望这有帮助。