由于导入顺序,Backbone View不是Webpack中的构造函数错误

时间:2017-08-26 23:21:33

标签: javascript backbone.js webpack

我在1个文件中有一个骨干视图,我试图在另一个文件中实例化,'条目'文件。使用Webpack捆绑输出文件,并在视图代码之前首先在输出文件中加载条目文件。像这样:

index.js:

import $ from 'jquery';
import { Book } from './views/Book';

$(document).ready(function () {
  new Book();
});

Book.js

import Backbone from 'backbone';

const Book = Backbone.View.extend({
  tagName: 'li',

  template: _.template('<%= name %>'),

  render: function () {
    this.$el.html(this.template(this.model.toJSON()));
    return this;
  }
});

export default Book;

在运行项目时,我在控制台中收到此错误:

TypeError: __WEBPACK_IMPORTED_MODULE_1__views_Book__.Book is not a constructor
    at HTMLDocument.<anonymous> 
index.js:5 Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_1__views_Book__.Book is not a constructor

运行webpack时,我收到此警告:

WARNING in ./js/index.js
5:6-10 "export 'Book' was not found in './views/Book'

我看到一些关于循环依赖的帖子,但不要认为这是问题所在。有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:1)

如果您使用

export default Book

然后你需要以这种方式加载

import Book from './views/Book';
export Book

可以使用

import { Book } from './views/Book';

答案 1 :(得分:0)

好的,修复程序正在改变我的webpack配置文件中的入口点。我更改了入口点:

entry: '/index.js'

entry: [SRC_DIR + '/views/main.js', SRC_DIR + '/index.js']

这确保首先加载依赖项(在main.js中),然后加载index.js文件。因此,在捆绑的输出文件中,依赖项(在本例中为Book视图)在初始化之前实现。因此问题不在我发布的代码中,而是在Webpack的配置文件中。