koa-static:旧 Node.js 不支持异步函数

koa-static: async function isn't supported by old Node.js

在我的 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

所以我的 Node 版本是 6.11.0。而koa-static使用了async/await函数,Node.js比v7.6.0.

更新的版本支持。

那么,如果我不打算更新节点,是否可以解决此问题?我手动使用 Babel 来转换我的 ES6 代码。但是对于包,我可以babel吗?

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

如果绝对不行,有两种可行的方法:

  1. 设置 package.json 步骤,作为安装过程的一部分为您提供 Babel 转译(npm installpreinstallpostinstall 步骤)。这样您将在安装后立即获得转译包。
  2. 配置您的 Webpack(Gulp、Grunt)以使用 Babel 预处理 node_modules 或特别是 koa-static。性能下降可能很严重,这是一个相当懒惰的解决方案。