1

with を使用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>

このようにアプリを実行すると、すべてが機能しているように見えます。オブジェクトのように見えるconsole.logforを取得します。次に、からforを取得します。問題はありません。ngangularconsole.log$scopeMainCtrl

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とエラーが発生します:

Uncaught Error: [$injector:modulerr] undefined Uncaught TypeError: undefined のメソッド 'module' を呼び出せません

  1. angularが適切にロードされていないか何かを示しているようです。に何かを注入することはできませんmyappが、依存関係はありません。ないngRouteか何も
  2. ng以前は正しく定義されていましたが、現在は未定義angularです。これにより、2番目のエラーも発生します
  3. インは呼び出さconsole.logMainCtrlません。前の行にエラーがあるので、大きな驚きではありません。 ただし、に変更ngするとangularundefinedエラーは発生せずapp.controllerに呼び出されますが、console.logfromMainCtrlまだ呼び出されません。

私の唯一の推測は、angular が 2 回縮小されていることです (既に angular.min.js を使用してから、r.js再度縮小しています)。この問題を解決するために何かできることはありますか?

4

1 に答える 1