【问题标题】:variable not found / undefined after grunt build (uglify)grunt 构建后未找到/未定义变量(uglify)
【发布时间】:2016-07-05 12:58:30
【问题描述】:

我正在使用 AngularJS 构建一个带有地图的简单应用程序。由于主 ctrl 的逻辑太多,我为导航栏构建了第二个控制器。直到这里一切正常。现在我在重构主控制器时外包了 map.on('zoomend' ... ) 函数。

现在的问题是,当缩小导航栏控制器文件时(通过 grunt build uglify)我得到以下错误:

无法读取未定义的

这意味着 map 是未定义的,即使它是在文件顶部声明的,而且我在 localhost 上没有问题(grunt serve)。

导航栏Ctrl:

'use strict';
angular.module('angularMapApp').controller('navbarController', navbarController);
navbarController.$inject = ['$scope', '$mdSidenav', 'helper', 'RespondService', 'shipTypes'];

function navbarController($scope, $mdSidenav, helper, RespondService, shipTypes) {
  var map = RespondService.getMap();
 map.on('zoomend', function() {
    timestamp = RespondService.getTimestamp();
    selectedShipTypes = RespondService.getSelectedShipTypes();
    selectedShipState = RespondService.getSelectedShipState();
    showGrid = RespondService.getShowGrid();
    helper.loadAndShowShipMarkers(timestamp, selectedShipTypes, selectedShipState, showGrid, map).then(function(results) {
      $scope.numberOfShips = results;
      RespondService.setNumberOfShips($scope.numberOfShips);
    });
  });

所以这是我的控制器的简短版本。 grunt 文件仍然与使用 yeoman 创建的相同。我也在文件顶部记录了地图值,它在那里有一个值。但是使用 'map.on' 可能不起作用。

也许任何人都可以帮助我。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您的 $inject 似乎是正确的,因此 minify 对于角度注入应该可以正常工作。看起来 var map 正在从 RespondService.getMap() 加载数据。您希望从该功能中获得什么?您可能想设置一个断点,看看是否返回了您期望的结果。

    【讨论】:

    • 我记录了 var map 的结果,此时我得到了预期值
    • 价值是多少?它有一个函数 map() 吗?
    • 是的,它与另一个控制器中的对象相同。然而,当使用“grunt build”时,var map 是未定义的。我们认为错误可能出在导航栏控制器的初始化顺序中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    相关资源
    最近更新 更多