Backbone + Webpack `Uncaught TypeError: _.create is not a function`, underscore not loading?

Backbone + Webpack `Uncaught TypeError: _.create is not a function`, underscore not loading?

我是第一次使用 webpack。当需要 backbone 时,它似乎没有正确加载下划线,因为我在浏览器中的 backbone.js:1892 中收到错误 Uncaught TypeError: _.create is not a function

main.js

'use strict';
import Backbone from 'backbone';
Backbone.$('body');  // Doesn't error
Backbone.View.extend({}); // Gives error

我的 webpack 配置可以在这个 boilerplate repo.

中找到
└─┬ backbone@1.3.3
  └── underscore@1.8.3

*Update* 当我使用 backbone v1.2.3 时,它工作正常。 v1.3.0+ 导致此错误。

原来这是一个问题,因为 npm3 加载依赖项的方法,结合我的 webpack 配置。

我正在为 modulesDirectories 属性.

使用一个目录
modulesDirectories: [
    path.join(__dirname, 'node_modules')
]

由于 npm3 以平面方式加载依赖项(全部在根 node_modules 目录中,并且版本冲突被放入 node_modules 子目录下的模块目录中,webpack 始终导入下划线 1。 7.x(我项目中另一个模块的依赖项)而不是 backbone 子目录中的 1.8.3。

降级到 backbone v1.2.3 只是因为它使用的下划线版本与我的其他依赖项使用的下划线版本相同,所以没有冲突。

我完全删除了 modulesDirectories,因为它 has a default。我也可以将其更改为 modulesDirectories=['node_modules'] 以获得相同的效果。