Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using async/await with webpack-simple configuration throwing error: RegeneratorRuntime not defined

I am using webpack-simple template with following configurations:

package.json

{   "name": "vue-wp-simple",   "description": "A Vue.js project",   "version": "1.0.0",   "author": "v",   "private": true,   "scripts": {     "dev": "webpack-dev-server --inline --hot",     "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"   },   "dependencies": {     "vue": "^2.3.3",     "vue-router": "^2.7.0",    },   "devDependencies": {     "babel-core": "^6.0.0",     "babel-loader": "^6.0.0",     "babel-preset-env": "^1.5.1",     "babel-preset-es2015": "^6.24.1",     "babel-preset-stage-2": "^6.24.1",     "cross-env": "^3.0.0",     "css-loader": "^0.25.0",     "file-loader": "^0.9.0",     "style-loader": "^0.18.2",     "stylus": "^0.54.5",     "stylus-loader": "^3.0.1",     "vue-loader": "^12.1.0",     "vue-template-compiler": "^2.3.3",     "webpack": "^2.6.1",     "webpack-dev-server": "^2.4.5"   } }  

.babelrc

{   "presets": [     ["env", { "modules": false }],   ] }  

below is how I use async/await in my component

async mounted(){             //this.$store.dispatch('loadImg', this.details.imgUrl).then((img) => {                 //this.drawImage(img);                 //});              var result = await this.loadImg();             console.log(result);         },         methods:{             async loadImg(){                 return new Promise((resolve, reject) => {                     setTimeout(() => {                         resolve('yeah async await works!');                     }, 2000);                 });             },           } 

But when I run the app I get the error: ReferenceError: regeneratorRuntime is not defined and even the component is not being displayed

like image 719
boomboxboy Avatar asked Sep 24 '17 10:09

boomboxboy


2 Answers

In order to use await/async you will need to install a couple of Babel dependencies. This works with Vuejs project -

npm install --save-dev babel-polyfill npm install --save-dev babel-plugin-transform-regenerator 

Once installed, you will need to modify your .babelrc file to use the plugin as follows -

{     "plugins": ["transform-regenerator"] } 

and also your webpack.config.js file to use the regenerator as follows -

require("babel-polyfill");  module.exports = {   entry: ["babel-polyfill", "./app.js"] }; 

Make the necessary changes according to your project structure and filename etc.

like image 184
Sohail Avatar answered Sep 21 '22 07:09

Sohail


To use async & await, you should add 2 plugins to your babel config: https://babeljs.io/docs/plugins/transform-async-to-generator/ and https://babeljs.io/docs/plugins/syntax-async-functions/

like image 23
Quoc-Anh Nguyen Avatar answered Sep 20 '22 07:09

Quoc-Anh Nguyen