【问题标题】:koa-static: async function isn't supported by old Node.jskoa-static:旧的 Node.js 不支持异步功能
【发布时间】:2017-09-04 01:23:46
【问题描述】:

在我的 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.0。并且koa-static 使用了async/await 函数,该函数由高于 v7.6.0 的 Node.js 支持。

如果我不打算更新节点,是否有办法解决这个问题?我手动使用 Babel 转译我的 ES6 代码。但是对于包裹,我可以 babel 吗?

【问题讨论】:

  • 用 babel 转译

标签: javascript babeljs koa


【解决方案1】:

问题是 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。性能下降可能很严重,这是相当懒惰的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2013-10-12
    • 2011-02-20
    相关资源
    最近更新 更多