首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外令牌* Koa.js

意外令牌* Koa.js
EN

Stack Overflow用户
提问于 2015-06-30 14:43:41
回答 2查看 1.7K关注 0票数 2

我在试图运行Koa时遇到了一个和谐错误。

下面是我运行摩卡测试后的错误,在最后得到这个错误:

代码语言:javascript
复制
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

代码语言:javascript
复制
'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);
});

如果你还需要我帮忙解决这个问题,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-30 14:59:41

它在生成器function*语法上失败了。以下是几个绕过这一问题的选择:

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

Stack Overflow用户

发布于 2015-06-30 15:03:03

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

这里有几个选项,您可以将该文件传输回ES5,以便浏览器/node.js能够理解它。您还可以使用类似于巴贝尔的东西将代码传输回ES5。您还可以在节点中设置--harmony标志,这将允许节点理解和使用生成器函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31141443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档