koa-static:旧Node.js不支持异步功能

时间:2017-09-04 01:23:47

标签: javascript babeljs koa

在我的Koa项目中,我使用koa-static来提供静态文件。简单的项目如下:

var koa = require('koa');
var serve = require('koa-static');
var app = new koa();
app.use(serve('./public'));
app.listen(3000);

我们计划将所有静态文件放在public文件夹中。

但是当我想运行Node应用程序时,我收到以下错误消息。

koa-static@4.0.1@koa-static\index.js:39
return async function serve (ctx, next) {
             ^^^^^^^^
SyntaxError: Unexpected token function

所以我的节点版本是6.11.0koa-static使用了async/await函数,Node.js支持的函数比v7.6.0更新。

因此,如果我不打算更新Node,那么还是可以解决这个问题吗?我手动使用Babel来转换我的ES6代码。但对于包裹,我可以通过它来消除它吗?

1 个答案:

答案 0 :(得分:0)

问题是Koa是专门围绕async/await和Node.js 7.6.0或更高版本构建的,GitHub提到了这一点。所以包开发人员只是遵循基本标准,大多数时候都不打扰支持早期版本的Node.js.也许你应该重新考虑迁移?

如果绝对没有,有两种可见的方法可以使它工作:

  1. 设置package.json步骤,以便在安装过程中使用Babel进行转换(npm install具有preinstallpostinstall步骤)。这样你就可以在安装后立即编译包。
  2. 配置您的Webpack(Gulp,Grunt)以使用Babel预处理node_modules或具体koa-static。性能下降可能很严重,这是一个相当懒惰的解决方案。