3

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

+0

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

+1

Merci beaucoup! Cela a résolu le problème. Le chemin de la construction a été remplacé par un chemin vers un fichier source. –

+0

Super! Je vais ajouter une réponse. – Tholle

Répondre

3

Qu'il se plaint d'une import -Déclaration est une indication que vous faites référence à un fichier source . Assurez-vous que votre backbone.radio -path va au fichier de construction.

+0

Cela a résolu le problème. Le chemin vers la construction, a été remplacé par un chemin vers un fichier source en quelque sorte. Je vous remercie! –