当我在angular+requirejs的项目里使用angular-chart的时候出现了Uncaught TypeError: Cannot read property 'defaults' of undefined的错误,最后的原因在于amd的加载策略,
修改angular-chart.js源文件
开始部分:
(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module
define(['angular', 'chart.js'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory(require('angular'), require('chart.js'));
} else {
// Browser globals
factory(angular, Chart);
}
这段代码表明angular-chart依赖angular 和chart.js,但是在requirejs里使用define(['chart.js']),requirejs会默认查找当前的requirejs的根目录下的chart.js而不会查找在config里的path定义的别名
解决方式
将里面的chart.js改成你在
require.config({
"path":{"chart别名":"............."}
})
所定义的chart别名
(function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module define(['angular', 'chart别名'], factory); } else if (typeof exports === 'object') { // Node/CommonJS module.exports = factory(require('angular'), require('chart别名')); } else { // Browser globals factory(angular, Chart); }
demo
https://github.com/wand933/angular-requirejs-angular-chart/tree/master