簡體   English   中英

$ injector:modulerr在r.js優化之后,但不是之前

[英]$injector:modulerr after r.js optimization, but not before

我使用require.jsr.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>

當我這樣運行應用程序時,一切似乎都可以正常工作。 我得到ngconsole.log ,它似乎是有angular物體。 然后,從MainCtrl獲取$scopeconsole.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]未定義未捕獲的類型錯誤:無法調用未定義的方法“模塊”

  1. 似乎表明角度未正確加載或其他東西。 它無法向myapp注入內容,但沒有依賴性。 不是ngRoute或其他任何東西
  2. ng現在是不確定的,即使它以前是正確的angular 這也會導致第二個錯誤
  3. 不調用MainCtrlconsole.log 由於前一行存在錯誤,因此這並不奇怪。 但是 ,如果將ng更改為angular ,則不會發生undefined錯誤,並且會調用app.controller ,但不會調用MainCtrlconsole.log

我唯一的猜測是,角度被縮小了兩次(我已經在使用angular.min.js,然后r.js再次將r.js縮小了)。 我可以做些什么來解決這個問題?

shim文件中 ,建議:

您應使用mainConfigFile構建選項來指定可在其中找到墊片配置的文件。 否則,優化程序將不了解填充程序配置。 另一個選項是在構建配置文件中復制填充程序配置。

這可能導致生成的文件中缺少angular的填充。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM