首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用babelify不超过npm的Transpile异步函数

使用babelify不超过npm的Transpile异步函数
EN

Stack Overflow用户
提问于 2015-08-25 15:47:02
回答 1查看 1.3K关注 0票数 0

我试图使用Babelify来传输异步并等待ES7特性,但我不希望使用gulp、grunt或类似的构建工具。到目前为止,我只使用npm取得了巨大的成功,这一额外的步骤似乎不值得采用更复杂的构建工具链。

这是我的最小package.json文件,只要我不使用异步/等待,它就能工作:

代码语言:javascript
复制
{
  "main": "main.js",
  "scripts": {
    "compile": "browserify . --outfile bundle.js"
  },
  "browserify": {
    "transform": [
      [
        "babelify",
        {
          "optional": [
            "es7.asyncFunctions"
          ]
        }
      ]
    ]
  },
  "devDependencies": {
    "babelify": "^6.2.0",
    "browserify": "^11.0.1"
  }
}

这是我试图传输的少量代码(main.js):

代码语言:javascript
复制
import "babelify/polyfill";

let asPromised = await fetch();
console.log(asPromised);

function fetch() {
  return Promise.resolve("fetched");
}

下面是我执行npm run compile时的不幸结果

代码语言:javascript
复制
> @ compile ~/project
> browserify . --outfile bundle.js

SyntaxError: ~/project/main.js: Unexpected token (3:23)
  1 | import "babelify/polyfill";
  2 | 
> 3 | let asPromised = await fetch();
    |                        ^
  4 | console.log(asPromised);
  5 | 
  6 | function fetch() {
    at Parser.pp.raise (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/location.js:24:13)
    at Parser.pp.unexpected (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:82:8)
    at Parser.pp.semicolon (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/util.js:69:81)
    at Parser.pp.parseVarStatement (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/statement.js:371:8)
    at Parser.pp.parseStatement (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/statement.js:99:19)
    at Parser.parseStatement (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/plugins/flow.js:621:22)
    at Parser.pp.parseTopLevel (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/statement.js:30:21)
    at Parser.parse (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/parser/index.js:70:17)
    at Object.parse (~/project/node_modules/babelify/node_modules/babel-core/node_modules/babylon/lib/index.js:45:50)
    at Object.exports.default (~/project/node_modules/babelify/node_modules/babel-core/lib/helpers/parse.js:36:18)

npm ERR! @ compile: `browserify . --outfile bundle.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ compile script.
npm ERR! This is most likely a problem with the  package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     browserify . --outfile bundle.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls 
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 4.0.2-stable
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "run" "compile"
npm ERR! cwd ~/project
npm ERR! node -v v0.10.30
npm ERR! npm -v 1.4.21
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     ~/project/npm-debug.log
npm ERR! not ok code 0

(地理标志:https://gist.github.com/au-phiware/34376f64f9ea6777eefd)

我还在命令行中尝试了以下操作,这些操作都会产生相同的错误:

代码语言:javascript
复制
browserify . --outfile bundle.js -t [ babelify --optional es7.asyncFunctions ]
babel --out-file bundle.js --optional es7.asyncFunctions main.js
babel --out-file bundle.js --stage 2 main.js

我觉得我好像错过了什么.或者这是巴贝尔虫?蒂娅。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 15:52:00

我觉得我好像错过了什么.

您只能在await 函数中使用 async函数。例如:

代码语言:javascript
复制
async function foo() {
   return await bar();
}
foo().then(x => console.log(x));

在最高层,你总是必须直接处理承诺:

代码语言:javascript
复制
fetch().then(x => console.log(x));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32208450

复制
相关文章

相似问题

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