异步等待不会在 Grunt 中编译

Async await doesn't get compiled in Grunt

我正在尝试使用 Grunt 任务运行程序将我的 ES6+ 代码编译为 vanilla js。 我特意选择了 Grunt 而不是 webpack 和 gulp 因为我只是想缩小我的 js 文件。

在 运行 代码收到错误提示未定义 generatorRuntime 后,我已成功将我的 ES6 代码编译为 vanilla。在分析了这个问题之后,我认为我的异步和等待代码在转换为 vanilla js 后出现了问题。

我有 gruntfile.js 和 package.json 的代码片段。

        babel: {
            options: {
                sourceMap: true
            },
            dist: {
                files: [{
                    "expand": true,
                    "cwd": "./htdocs/js/src",
                    "src": ["**/*.js"],
                    "dest": "./htdocs/js/compiled/",
                    "ext": ".js"
                }]
            }
        },
        //uglify will minify all the js files in js/src folder.
        uglify: {
            all_src : {
                options : {
                  sourceMap : true
                },
                files: [{
                    expand: true,
                    flatten: true,
                    cwd:'./htdocs/js/compiled',
                    src: '**/*.js',
                    dest: './htdocs/js/dist',
                    ext: '.min.js'
                }]
            }
        }
    grunt.loadNpmTasks('grunt-babel');
    grunt.loadNpmTasks('grunt-contrib-uglify');


Package.json

  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-preset-latest": "^6.24.1",
    "grunt": "^1.1.0",
    "grunt-babel": "^7.0.0",
    "grunt-cli": "^1.3.2",
    "grunt-contrib-uglify": "^4.0.1"  
},
  "babel": {
    "presets": [
      "latest"
    ]
  }

这可能是因为 polyfill 没有包含在您的包中。在 Gruntfile 中的 babel.options 对象中,您可以设置

presets: [['@babel/preset-env', { useBuiltIns: 'usage', corejs: 3 }]] 并且不要忘记将 corejs 作为依赖项包含在您的项目中。

npm install core-js --save