如何使用ES6在NodeJS中创建具有异步导出的模块

时间:2017-05-19 07:44:27

标签: node.js ecmascript-6

我想为调用相同API的项目创建一个模块(在node_modules中安装)。但是当我导出我的异步函数时,我收到一个错误:

index.js Unexpected token (3:21)
You may need an appropriate loader to handle this file type.

Index.js是我的模块文件。

以下是示例代码:

export default async function({path, method = 'GET', body}, userToken = null, contentType = 'application/json') {
     // some code here ...
}

在我的项目中,我导入如下:

import invokeApi from 'my_sdk';

1 个答案:

答案 0 :(得分:0)

您的构建配置似乎在使用者代码方面存在问题。在使用异步API时必须启用async / await,因为它需要重新生成运行时(或安装Node 7.6 or later,因为它带来本机异步/等待支持)。

如果您在网络上使用此代码,则可能需要在入口点文件(可能是main.js,app.js或index.js)中import 'babel-polyfill'并设置Webpack to use Babel to transpile your code

使用babel-node跟随"presets": ["es2015", "stage-0"]

使用魅力

asyncModule.js

const sleep = async duration => 
  new Promise(resolve => setTimeout(resolve, duration))

export default async function({path, method = 'GET', body}, userToken = null, contentType = 'application/json') {
 await sleep(500)
 return "Hello :)"
}

index.js

import asyncExample from './asyncModule'

const main = async () => {
  const result = await asyncExample({path: '/', body: ''});
  console.log(result)

main();

npm start

"start": "babel-node --presets es2015 index.js"