Uncaught SyntaxError: Unexpected token import in "backbone.radio.js"
Uncaught SyntaxError: Unexpected token import in "backbone.radio.js"
我正在尝试将应用程序从 Backbone 迁移到 Marionette (v3),但我已经卡在一个点上两天了。
当我尝试在浏览器中 运行 应用程序时,此错误出现在控制台中(并且屏幕是空白的):
未捕获语法错误:backbone.radio.js:1
中的意外令牌导入
backbone.radio.js 中的第一行是 underscore:
的导入语句
import _ from 'underscore';
我使用 Requirejs 作为模块加载器。这是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()
})
这是我的appinstance.js:
define(function (require) {
var App = require('app')
return new App()
})
这是我的 app.js 文件:
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()
}
})
})
有谁知道我为什么会遇到这个问题?
不幸的是,我运行不知道如何解决这个问题,任何帮助将不胜感激。
P.S.: 我用Marionette v3.0.0, Backbone v1.2.3 和 Requirejs v2.1.15
它抱怨 import
语句表明您正在引用源文件。确保您的 backbone.radio
-path 转到构建文件。
我正在尝试将应用程序从 Backbone 迁移到 Marionette (v3),但我已经卡在一个点上两天了。
当我尝试在浏览器中 运行 应用程序时,此错误出现在控制台中(并且屏幕是空白的):
未捕获语法错误:backbone.radio.js:1
中的意外令牌导入backbone.radio.js 中的第一行是 underscore:
的导入语句import _ from 'underscore';
我使用 Requirejs 作为模块加载器。这是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()
})
这是我的appinstance.js:
define(function (require) {
var App = require('app')
return new App()
})
这是我的 app.js 文件:
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()
}
})
})
有谁知道我为什么会遇到这个问题?
不幸的是,我运行不知道如何解决这个问题,任何帮助将不胜感激。
P.S.: 我用Marionette v3.0.0, Backbone v1.2.3 和 Requirejs v2.1.15
它抱怨 import
语句表明您正在引用源文件。确保您的 backbone.radio
-path 转到构建文件。