首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在我的gulpfile.babel.js中使用ES2016/ES7提案进行异步/等待

如何在我的gulpfile.babel.js中使用ES2016/ES7提案进行异步/等待
EN

Stack Overflow用户
提问于 2016-03-26 06:34:30
回答 2查看 1K关注 0票数 3

我有一个非常简单的gulpfile.babel.js。

代码语言:javascript
运行
复制
import 'babel-polyfill'

let y = ()=>{return Promise.resolve(true)}

async function awaitY() {
  let m = await y()
  console.log(m)
}

awaitY()

以及我的package.json中的以下开发人员依赖项

代码语言:javascript
运行
复制
"babel-core": "^6.7.4",
"babel-polyfill": "^6.7.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-stage-0": "^6.5.0"

以及我的.babelrc中的以下内容

代码语言:javascript
运行
复制
{
  "presets": ["es2015","stage-0"]
}

当我运行gulp时,我得到以下错误...

代码语言:javascript
运行
复制
MacBook-Pro-2:gulptest jschlesser$ gulp
[15:26:17] Requiring external module babel-core/register
/Users/jschlesser/Dropbox (Personal)/prj/cursive/spout/gulptest/gulpfile.babel.js:4
  var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
                              ^

ReferenceError: regeneratorRuntime is not defined
    at /Users/jschlesser/Dropbox (Personal)/prj/cursive/spout/gulptest/gulpfile.babel.js:4:31
    at Object.<anonymous> (gulpfile.babel.js:5:16)
    at Module._compile (module.js:435:26)
    at loader (/Users/jschlesser/Dropbox (Personal)/prj/cursive/spout/gulptest/node_modules/babel-register/lib/node.js:126:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/jschlesser/Dropbox (Personal)/prj/cursive/spout/gulptest/node_modules/babel-register/lib/node.js:136:7)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Liftoff.handleArguments (/Users/jschlesser/.npm-packages/lib/node_modules/gulp/bin/gulp.js:116:3)
MacBook-Pro-2:gulptest jschlesser$

我想知道在gulpfile中使用async/await需要哪些步骤。该错误意味着gulp使用了一个请求钩子来通过babel运行gulpfile,并且它将异步函数转换为生成器。

它说错误在第4行。

var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {

但是它看起来并没有将所有正确的东西注入到编译后的文件中来使用regeneratorRuntime。

EN

回答 2

Stack Overflow用户

发布于 2016-03-26 06:58:16

您需要有一个加载polyfill的单独入口点,然后是主应用程序文件。

gulpfile.babel-entry.js

代码语言:javascript
运行
复制
import 'babel-polyfill'
import './gulpfile.babel.js'

gulpfile.babel.js

代码语言:javascript
运行
复制
let y = ()=>{return Promise.resolve(true)}

async function awaitY() {
  let m = await y()
  console.log(m)
}

awaitY()

more info

票数 0
EN

Stack Overflow用户

发布于 2016-07-09 07:39:18

另一种方法是提供babel-polyfill作为gulp参数。

$ gulp --require babel-polyfill

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36229127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档