使用 async/await 和 webpack-simple 配置抛出错误:RegeneratorRuntime not defined

新手上路,请多包涵

我正在使用具有以下配置的 webpack-simple 模板:

包.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 }],
  ]
}

下面是我如何在我的组件中使用 async/await

 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);
                });
            },
         }

但是当我运行应用程序时出现错误: ReferenceError: regeneratorRuntime is not defined 甚至组件没有显示

原文由 boomboxboy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 949
2 个回答

为了使用 await/async ,你需要安装几个 Babel 依赖项。这适用于 Vuejs 项目 -

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

安装后,您需要修改 .babelrc 文件以使用该插件,如下所示 -

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

还有你的 webpack.config.js 文件来使用再生器,如下所示 -

 require("babel-polyfill");

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

根据您的项目结构和文件名等进行必要的更改。

原文由 Sohail 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题