Tôi đang viết một số mã frontend với ECMAScript 6 (transpiled với BabelJS, và sau đó browserified với Browserify) để tôi có thể có một lớp học trong một tập tin, xuất khẩu nó và nhập nó trong một tập tin.Xuất khẩu một lớp học với ES6 (Babel)
Con đường tôi đang làm điều này là:
export class Game {
constructor(settings) {
...
}
}
Và sau đó vào tập tin đó nhập khẩu các lớp I làm:
import {Game} from "../../lib/pentagine_browserified.js";
var myGame = new Game(settings);
sau đó tôi biên dịch nó với grunt
, đây là Gruntfile
của tôi :
module.exports = function(grunt) {
"use strict";
grunt.loadNpmTasks('grunt-babel');
grunt.loadNpmTasks('grunt-browserify');
grunt.initConfig({
"babel": {
options: {
sourceMap: false
},
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"
}
}
}
});
grunt.registerTask("default", ["babel", "browserify"]);
};
Tuy nhiên, trong cuộc gọi new Game(
, tôi nhận được llowing lỗi:
Uncaught TypeError: undefined is not a function
Như vậy, những gì tôi đã làm là phân tích các mã được tạo bởi Babel và Browserify và tôi thấy dòng này trên PlayState_browserified.js
:
var Game = require("../../lib/pentagine_browserified.js").Game;
tôi quyết định in require
đầu ra:
console.log(require("../../lib/pentagine_browserified.js"));
Và nó là gì, nhưng một đối tượng rỗng. Tôi quyết định kiểm tra pentagine_browserified.js
file:
var Game = exports.Game = (function() {
Nó có vẻ như nó được xuất khẩu một cách chính xác các lớp, nhưng vì một lý do khác, nó không được yêu cầu trên các tập tin khác.
Ngoài ra, tôi chắc chắn rằng tệp đang được yêu cầu chính xác vì việc thay đổi chuỗi "../../lib/pentagine_browserified.js"
sẽ phát ra lỗi Not Found
, do đó, nó sẽ tìm đúng tệp mà tôi chắc chắn.
bạn cần 'Xuất trò chơi mặc định' –