0

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

在运行代码后,我已成功将我的 ES6 代码编译为 vanilla,但出现错误,提示未定义 generatorRuntime。在分析了这个问题后,我可以认为我的 async 和 await 代码在转换为 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');


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

4

1 回答 1

1

这可能是因为 polyfill 没有在您的捆绑包中发货。在babel.optionsGruntfile 中的对象中,您可以设置

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

npm install core-js --save

于 2020-09-08T08:56:47.227 回答