J'essaye de migrer une application de Backbone vers Marionette (v3), mais je suis resté coincé dans un point pendant deux jours déjà.Uncaught SyntaxError: Importation de jeton inattendue dans "backbone.radio.js"
Lorsque je tente d'exécuter l'application dans le navigateur, cette erreur apparaît dans la console (et l'écran est vide):
Uncaught SyntaxError: import jeton inattendu dans backbone.radio.js: 1
première ligne dans backbone.radio.js est la déclaration d'importation pour Souligner:
import _ from 'underscore';
J'utilise Requirejs comme chargeur de module. Ceci est la configuration main.js:
require.config({
paths: {
jquery: '../bower_components/jquery/dist/jquery',
underscore: '../bower_components/underscore/underscore',
backbone: '../bower_components/backbone/backbone',
'backbone.radio': '../bower_components/backbone.radio/build/backbone.radio',
'backbone.babysitter': '../bower_components/backbone.babysitter/src/build/backbone.babysitter',
marionette: '../bower_components/marionette/lib/backbone.marionette',
bootstrap: '../bower_components/bootstrap/dist/js/bootstrap',
text: '../bower_components/requirejs-plugins/lib/text'
},
map: {
'*': {
'backbone.wreqr': 'backbone.radio'
}
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
},
backbone: {
deps: [ 'underscore', 'jquery' ],
exports: 'Backbone'
},
marionette: {
deps: [ 'jquery', 'underscore', 'backbone' ],
exports: 'Marionette'
},
bootstrap: {
deps: [ 'jquery' ]
}
}
})
require(['appinstance'], function (app) {
app.start()
})
Ceci est mon appinstance.js:
define(function (require) {
var App = require('app')
return new App()
})
Et ceci est mon app.js fichier:
define(function (require) {
var $ = require('jquery')
var _ = require('underscore')
var Backbone = require('backbone')
var Router = require('router')
var Controller = require('controller')
var Marionette = require('marionette')
var CommonHeaderView = require('views/common/header')
return Marionette.Application.extend({
/**
* Define the regions for the application.
*
* @returns {Object}
*/
regions: function() {
return {
header: '#header'
}
},
/**
*
* @param {Object} options
*/
start: function (options) {
var commonHeaderView = new CommonHeaderView()
Marionette.Application.prototype.start.apply(this, [options])
this.header.show(commonHeaderView)
this.Router = new Router({ controller: new Controller() })
Backbone.history.start()
}
})
})
Est-ce que quelqu'un sait pourquoi j'ai ce problème?
Malheureusement, j'ai manqué d'idées sur la façon de résoudre ce problème, toute aide sera grandement appréciée.
PS: J'utilise Marionette v3.0.0, Backbone v1.2.3 et Requirejs v2.1.15
La déclaration d'importation ne doit pas être trouvée dans le fichier de construction, mais uniquement dans les fichiers source que les développeurs utilisent pour créer 'backbone.radio'. Si vous [regardez le fichier dans le référentiel] (https://github.com/marionettejs/backbone.radio/blob/master/build/backbone.radio.js), il n'y a pas d'instruction 'import'. Avez-vous téléchargé le bon fichier? – Tholle
Merci beaucoup! Cela a résolu le problème. Le chemin de la construction a été remplacé par un chemin vers un fichier source. –
Super! Je vais ajouter une réponse. – Tholle