4
votes

I want to use async / await feature from ES7 in my Electron app, but it seems to be not working. It gives me

Syntax error: unexpected token function

after command npm start..

Electron: v0.37.6 Node: v5.11.0 stable Windows 10 x64

main.js

'use strict';

require("babel-core/register");
require("babel-polyfill");

(async function() {
  await console.log("test");
})()

package.json (snipped)

"devDependencies": {
  "babel": "^6.5.2",
  "babel-cli": "^6.7.7",
  "babel-core": "^6.7.7",
  "babel-eslint": "^6.0.3",
  "babel-plugin-syntax-async-functions": "^6.5.0",
  "babel-plugin-transform-async-to-generator": "^6.7.4",
  "babel-plugin-transform-regenerator": "^6.6.5",
  "babel-polyfill": "^6.7.4",
  "babel-preset-es2015": "^6.6.0",
  "babel-preset-stage-3": "^6.5.0",
  "electron-debug": "^0.6.0",
  "electron-prebuilt": "^0.37.0",
  "eslint": "^2.8.0"
}

.babelrc

{
  "presets": ["es2015", "stage-3"],
  "plugins": ["transform-async-to-generator", "syntax-async-functions", "transform-regenerator"]
}

Have you any idea what's missing in my conf etc. please?

Edit

I've also tried to add some import after require() but it ends with

Unexpected token import

It seems to like Babe is not loaded at all..

2

2 Answers

2
votes

Finally I solved it in two easy steps:

  1. puting my Babel stuff in seperate file

index.js

'use strict';

require('babel-core/register');
require("babel-polyfill");
require("./src/main");
  1. updated package.json to execute it on npm start

package.json

"scripts": {
  "start": "electron index.js"
},
-2
votes

I had the same problem. Here is how I solved it: http://masnun.com/2015/11/11/using-es7-asyncawait-today-with-babel.html

Edit

await should be used with promises