[英]AngularJs $injector:modulerr after RequireJS r.js optimization
[英]$injector:modulerr after r.js optimization, but not before
我使用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>
當我這樣運行應用程序時,一切似乎都可以正常工作。 我得到ng
的console.log
,它似乎是有angular
物體。 然后,從MainCtrl
獲取$scope
的console.log
。 沒問題。
運行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
時,出現錯誤:
未捕獲的錯誤:[$ injector:modulerr]未定義未捕獲的類型錯誤:無法調用未定義的方法“模塊”
myapp
注入內容,但沒有依賴性。 不是ngRoute
或其他任何東西 ng
現在是不確定的,即使它以前是正確的angular
。 這也會導致第二個錯誤 MainCtrl
的console.log
。 由於前一行存在錯誤,因此這並不奇怪。 但是 ,如果將ng
更改為angular
,則不會發生undefined
錯誤,並且會調用app.controller
,但仍不會調用MainCtrl
的console.log
。 我唯一的猜測是,角度被縮小了兩次(我已經在使用angular.min.js,然后r.js
再次將r.js
縮小了)。 我可以做些什么來解決這個問題?
在shim
文件中 ,建議:
您應使用mainConfigFile構建選項來指定可在其中找到墊片配置的文件。 否則,優化程序將不了解填充程序配置。 另一個選項是在構建配置文件中復制填充程序配置。
這可能導致生成的文件中缺少angular
的填充。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.