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 的早期版本。也许您应该重新考虑迁移?
如果绝对不行,有两种可行的方法:
- 设置 package.json 步骤,作为安装过程的一部分为您提供 Babel 转译(
npm install
有 preinstall
和 postinstall
步骤)。这样您将在安装后立即获得转译包。
- 配置您的 Webpack(Gulp、Grunt)以使用 Babel 预处理
node_modules
或特别是 koa-static
。性能下降可能很严重,这是一个相当懒惰的解决方案。
在我的 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 的早期版本。也许您应该重新考虑迁移?
如果绝对不行,有两种可行的方法:
- 设置 package.json 步骤,作为安装过程的一部分为您提供 Babel 转译(
npm install
有preinstall
和postinstall
步骤)。这样您将在安装后立即获得转译包。 - 配置您的 Webpack(Gulp、Grunt)以使用 Babel 预处理
node_modules
或特别是koa-static
。性能下降可能很严重,这是一个相当懒惰的解决方案。