意外令牌 * Koa.js

Unexpected Token * Koa.js

我在尝试 运行 Koa 时遇到和声错误。

这是我 运行 我的 mocha 测试后的错误,最后我得到了这个错误:

MacBook-Pro$ mocha test
...projects/search-api/node_modules/koa/lib/application.js:179
function *respond(next) {
         ^
SyntaxError: Unexpected token *
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)

这是我的 server.js

'use strict';

var supertestKoa = require('supertest-koa-agent');

var app = module.exports = require('koa')(),
    port = process.env.PORT || 3000;

supertestKoa(app);

app.listen(port, function(){
    console.log('Koa app is listening on port' + port);
});

如果您需要我提供任何其他帮助来解决此问题,请告诉我。

生成器 function* 语法失败。这里有一些解决这个问题的方法:

  • 如果您使用的是节点 0.11 或更高版本,则需要通过 运行 harmony 启用 es6 生成器。通常我会这样做:node --harmony path/to/mocha.
  • 或者,您可以升级到 io.js,它支持生成器和其他一些 es6 功能,不需要运行时标志。
  • 另一种可能性是 运行 使用 babel 转译器的测试。 babel website 有详细的操作说明(在该页面上查找 "mocha")。如果您仍在使用零生成器支持的节点 0.10 或更低版本,这可能是您最好的选择。

这是因为 application.js 中的 function * 不是您的节点文件。 function * 是 ES6 (ES2015) http://wiki.ecmascript.org/doku.php?id=harmony%3agenerators 中的生成器函数。这是 javascript 的下一个版本,并非所有 browsers/node.js 版本都支持。

这里有几个选项,您可以将该文件转译回 ES5,以便 browsers/node.js 可以理解它。您还可以使用 babel 之类的东西将您的代码转译回 ES5。您还可以在节点中设置 --harmony 标志,这将允许节点理解和使用生成器函数。