Ich schreibe etwas Frontend-Code mit ECMAScript 6 (transpiliert mit BabelJS, und dann mit Browserify browserifiziert), so dass ich eine Klasse in einer Datei haben kann, exportieren und in eine andere importieren Datei.Exportieren einer Klasse mit ES6 (Babel)
So wie ich das tue ist:
export class Game {
constructor(settings) {
...
}
}
Und dann auf die Datei, die die Klasse ich importiert:
import {Game} from "../../lib/pentagine_browserified.js";
var myGame = new Game(settings);
ich kompilieren Sie es dann mit grunt
ist, das ist mein Gruntfile
:
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"]);
};
Doch auf den new Game(
Anruf, erhalte ich die fo llowing Fehler:
Uncaught TypeError: undefined is not a function
Wie so, was ich tat, war den generierten Code von Babel und Browserify analysieren und ich fand diese Zeile auf PlayState_browserified.js
:
var Game = require("../../lib/pentagine_browserified.js").Game;
ich die require
Ausgabe drucken entschieden:
console.log(require("../../lib/pentagine_browserified.js"));
Und es ist nichts als ein leeres Objekt. Ich beschloss, die pentagine_browserified.js
Datei zu überprüfen:
var Game = exports.Game = (function() {
Es scheint, wie es richtig die Klasse exportiert, aber aus einem anderen Grund ist es nicht auf der anderen Datei erforderlich ist.
Ich bin mir auch sicher, dass die Datei ordnungsgemäß benötigt wird, weil das Ändern der Zeichenfolge "../../lib/pentagine_browserified.js"
einen Not Found
Fehler ausspuckt, so dass es für die richtige Datei geht, über die ich sicher bin.
Sie brauchen 'Export Standard Game' –