代码之家  ›  专栏  ›  技术社区  ›  David Gomes

与babel和browsrify的呼噜声

  •  4
  • David Gomes  · 技术社区  · 10 年前

    我有一个简单的JavaScript项目,它使用Babel将ECMAScript 6转换为ES5,然后需要Browserify来利用ES6的模块。

    所以,我想到了这个 Gruntfile.js 要编译它:

    module.exports = function(grunt) {
      "use strict";
    
      grunt.loadNpmTasks('grunt-babel');
      grunt.loadNpmTasks('grunt-browserify');
    
      grunt.initConfig({
        "babel": {
          options: {
            sourceMap: true
          },
          dist: {
            files: {
              "lib/pentagine.js": "lib/pentagine_babel.js",
              "demos/helicopter_game/PlayState.js": "demos/helicopter_game/PlayState_babel.js"
            }
          }
        },
    
        "browserify": {
          dist: {
            files: {
              "lib/pentagine.js": "lib/pentagine_babel.js",
              "demos/helicopter_game/PlayState.js": "demos/helicopter_game/PlayState_babel.js"
            }
          }
        }
      });
    
      grunt.registerTask("default", ["babel", "browserify"]);
    };
    

    grunt 运行正常,没有任何错误。但是,我遇到以下错误:

    Uncaught SyntaxError: Unexpected reserved word 在…上 export 未捕获语法错误:意外的保留字 在…上 import

    基本上,我在主文件中所做的是:

    export class Game {
        ...
    }
    

    然后将其导入为:

    import {Sprite, Game} from "lib/pentagine";
    

    我正在根据ECMAScript 6编写所有代码。然而,导出/导入似乎不起作用,而是与JavaScript保留字发生冲突(尽管我有 browserify.js 工作)。

    1 回复  |  直到 10 年前
        1
  •  5
  •   Pete TNT    10 年前

    你不应该 browserify babel 任务请注意,属性名称是目标文件 : 是源文件。(我假设您的ES6文件 filename.js 而不是 filename_babel.js )

    files: {
       "destination_file": "src_file"
    }
    

    这导致:

    grunt.initConfig({
        "babel": {
          options: {
            sourceMap: true
          },
          dist: {
            files: {
              "lib/pentagine_babel.js": "lib/pentagine.js",
              "demos/helicopter_game/PlayState_babel.js": "demos/helicopter_game/PlayState.js"
            }
          }
        },
    
        "browserify": {
          dist: {
            files: {
              "lib/pentagine_browserified.js": "lib/pentagine_babel.js",
              "demos/helicopter_game/PlayState_browserified.js": "demos/helicopter_game/PlayState_babel.js"
            }
          }
        }
      });
    

    或者只是 lib/pentagine_babel.js": "lib/pentagine_babel.js" 浏览,浏览 同一文件。