骨干木偶和 Webpack - 未捕获的类型错误:无法读取未定义的属性“收音机”

Posted

技术标签:

【中文标题】骨干木偶和 Webpack - 未捕获的类型错误:无法读取未定义的属性“收音机”【英文标题】:Backbone Marionette and Webpack - Uncaught TypeError: Cannot read property 'radio' of undefined 【发布时间】:2016-06-18 13:32:50 【问题描述】:

我最近在我的 webpack/backbone/marionette 项目上做了一个 npm install,但一切都失败了。我现在在运行应用程序时不断收到此错误:

Uncaught TypeError: Cannot read property 'radio' of undefined

backbone.marionette.js 第 3328 行

this.channel = _.result(this, 'channel') || Backbone.Wreqr.radio.channel(this.channelName);

Backbone:1.2.3(我也尝试了从今天开始的全新版本1.3.1)

木偶:2.4.4

Webpack:1.12.14

谢天谢地,我备份了我的旧 node_modules,并注意到 Marionette 库文件夹结构中的这种差异。

知道发生了什么吗?我没有碰过我的 package.json,我只是重新运行了 npm install,看起来像是一个新版本的 npm/node。

更新 我发现这个帖子至少有一个人有完全相同的问题,但我仍然没有解决方案 https://github.com/marionettejs/backbone.marionette/issues/2559

【问题讨论】:

【参考方案1】:

帮助将package.json 中的部门设置为:

 "dependencies": 
    "backbone.marionette": "^2.4.4",
    "jquery": "^2.2.1",
    "underscore": "^1.8.3"
  

(完全移除主干层)

【讨论】:

【参考方案2】:

我通过在我的 webpack 配置文件中添加别名解决了这个问题。

alias: 
    backbone: path.join(__dirname, 'node_modules', 'backbone', 'backbone')

我注意到如果没有别名,webpack 会在其输出文件中打包多个主干.js 副本。

【讨论】:

以上是关于骨干木偶和 Webpack - 未捕获的类型错误:无法读取未定义的属性“收音机”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:WEBPACK_IMPORTED_MODULE_1__.default 未定义(React、SASS、SCSS)

`lib` 中的骨干木偶、RequireJS 和依赖项

Vuejs 和 Firebase 存储问题。未捕获的类型错误:存储不是函数

骨干 1.1.2,木偶,requirejs,最小版本

未捕获的错误:元素类型无效

Vue.js 未捕获类型错误:_vueChartjs.Line.extend 不是函数