我正在使用require.js
withr.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
in<html>
和ng-controller=MainCtrl
on <body>
。
当我像这样运行应用程序时,一切似乎都正常。我得到了console.log
似乎ng
是angular
对象的那个。然后,我从console.log
. 没问题。$scope
MainCtrl
运行r.js
和使用 minified后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
我得到错误:
未捕获的错误:[$injector:modulerr] 未定义未捕获的类型错误:无法调用未定义的方法“模块”
- 似乎表明角度没有正确加载或其他东西。它不能向 注入东西
myapp
,但它没有依赖关系。没有ngRoute
或任何东西 ng
现在是未定义的,即使它angular
之前是正确的。这也导致了第二个错误console.log
inMainCtrl
没有被调用。这并不奇怪,因为上一行有错误。 但是,如果我更改ng
为错误不会发生angular
并被调用,但from仍然没有被调用。undefined
app.controller
console.log
MainCtrl
我唯一的猜测是 angular 被缩小了两次(我已经在使用 angular.min.js 然后r.js
再次缩小它)。我可以做些什么来解决这个问题吗?