所以我们的应用程序正在使用EmberJS。作为我们构建新版本的过程的一部分,我们运行npm install
,为项目安装所需的Node模块,并bower install
安装所需的Bower内容。
直到一个半月前,当npm install
打破这个项目时,这个工作很有效。我不知道问题是什么,但该项目在上一个版本的node_modules目录中运行良好,所以我们只是继续使用它。
经过一些调查后,我有时间发现问题在ember-load-initializers节点模块中出现问题,尽管它在某些其他依赖项中必然存在问题,因为当我用可用的版本替换模块时同样的错误。所以我认为问题出在其他地方。
这是我在Chrome的js控制台中遇到的错误:
Uncaught TypeError: Cannot read property 'camelize' of undefined
at http://localhost:4200/assets/vendor-7d0d937efb193a7279d8dcf4910a71fb.js:80947:51
at Array.forEach (native)
at exports.default (http://localhost:4200/assets/vendor-7d0d937efb193a7279d8dcf4910a71fb.js:80939:8)
at Module.callback (http://localhost:4200/assets/########-4fdb2c0e669c00ca0f41cc58f6fd8f9d.js:618:41)
at Module.exports (http://localhost:4200/assets/vendor-7d0d937efb193a7279d8dcf4910a71fb.js:110:32)
at requireModule (http://localhost:4200/assets/vendor-7d0d937efb193a7279d8dcf4910a71fb.js:34:18)
at http://localhost:4200/assets/########-4fdb2c0e669c00ca0f41cc58f6fd8f9d.js:5760:3
(anonymous) @ index.js:25
exports.default @ index.js:17
(anonymous) @ app.js:20
Module.exports @ loader.js:105
requireModule @ loader.js:29
(anonymous) @ app-boot.js:2
我用###审查了识别信息,但基本上它是应用程序名称。
以下是脚本中的错误行:
var module = require(moduleName, null, null, true);
if (!module) {
throw new Error(moduleName + ' must export an initializer.');
}
--> var initializerType = _ember2.default.String.camelize(dep.matches[1].substring(0, dep.matches[1].length - 1));
var initializer = module['default'];
if (!initializer.name) {
var initializerName = moduleName.match(/[^\/]+\/?$/)[0];
不确定如何进一步调试。起初我假设回购中的其中一个包破了,但现在已持续数月了。