为什么部署(串联、缩小)AngularJS+RequireJS应用程序不工作

Why deployed (concatenated, minified) AngularJS + RequireJS application is not working?

本文关键字:AngularJS+RequireJS 应用程序 工作 缩小 部署 串联 为什么      更新时间:2023-09-26

这是我在github上的项目(它真的很小,别担心,只是示例)。我提供它,所以你可以打开任何文件,我说的)。

当我在没有js/css连接和缩小的情况下打开我的应用程序时,我没有问题。路由和控制器按预期工作。

若我使用部署,则应用程序不工作。没有404错误,没有java脚本错误。我看到了我对小提琴手的期望。一切看起来都是正确的:正在加载styles.min.css和bootstrap.js.

为了部署我的应用程序,我使用Grunt。这是我的Gruntfile.js。这是requirejs任务的代码:

requirejs: {
  js: {
    options: {
      uglify2: {
        mangle: false
      },
      baseUrl: "public/js",
      mainConfigFile: "public/js/bootstrap.js",
      name: 'bootstrap',
      out: "build/js/bootstrap.js",
      optimize: 'uglify2'
    }
  }
},

为什么我会遇到这个问题?

马克斯:到底是什么问题,我做错了什么?

Min:我怎么至少可以调试我的缩小代码?所有调试器和console.log都将从代码中删除。如果我有调试器,我至少可以观察代码到底在哪里失败。。。

UPD-

注意,如何包含视图。。。这种方法会引起问题吗?

此外,我在bootstrap.js(输出文件)中找不到myCtrl。为什么?看起来它不包括在那里。。。

感谢

因为您的依赖项没有字符串对应项:

module.controller('main.myCtrl3', function ($scope) {
    $scope.debug = function () {
      console.log('debug', $scope.$id);
    }
  })

你需要到处换

 module.controller('main.myCtrl3',['$scope', function ($scope) {
        $scope.debug = function () {
          console.log('debug', $scope.$id);
        }
      }])

可能混淆器将$scope更改为类似s的smth,angular不知道注入的依赖项

您没有处理缩小,例如在/public/js/main/controllers/myCtrl.js 中

module.controller('main.myCtrl', function ($scope) {});

应该是

module.controller('main.myCtrl', ['$scope', function ($scope) {}]);