我使用require.js
与r.js
优化。 预优化,我有:
// MainCtrl.js
define(function () {
return ["$scope", function ($scope) { console.log($scope); }];
});
// main.js
require.config({
shim: {
angular: {
exports: "angular",
},
},
paths: {
angular: "lib/angular.min",
},
});
require(["angular", "MainCtrl"], function (ng, MainCtrl) {
console.log(ng);
var app = ng.module("myapp", []);
app.controller("MainCtrl", MainCtrl);
});
我的HTML是非常简单的; 它只是有ng-app=myapp
在<html>
和ng-controller=MainCtrl
上<body>
当我像这样运行的应用程序,一切似乎工作。 我得到console.log
为ng
这似乎是对angular
的对象。 然后,我得到console.log
为$scope
从MainCtrl
。 没问题。
运行后r.js
并使用缩小的main.js
,我得到的错误和东西不再起作用。 我跑r.js -o build.js
。
// build.js
({
appDir: "public",
baseUrl: "js",
dir: "dist",
fileExlusionRegExp: /^(r|build\.js)$/,
optimize: "uglify2",
optimizeCss: "standard",
modules: [{
name: "main"
}],
paths: {
angular: "lib/angular.min",
},
})
现在,当我访问index.html
我得到的错误:
未捕获的错误:[$注射器:modulerr]未定义遗漏的类型错误:无法调用未定义的方法“模块”
- 似乎表明,角度不正确加载或东西。 它不能注入东西
myapp
,但它没有依赖关系。 不ngRoute
或任何 -
ng
现在不确定的,即使它是正确angular
了。 这也导致了第二个错误 - 在
console.log
在MainCtrl
不叫。 不是一个巨大的惊喜,因为有上一行的错误。 但是 ,如果我改变ng
到angular
的undefined
不会出现错误和app.controller
被调用,但console.log
从MainCtrl
仍然不叫。
我唯一的猜测是,角被精缩两次(我已经使用angular.min.js然后r.js
minifies一遍)。 我可以做任何事情来解决这个问题?