javascript缩小后无法找到变量

时间:2019-06-18 06:47:33

标签: javascript angularjs gruntjs grunt-contrib-uglify

我有一个AngularJS网络应用程序。该应用程序运行良好,无需任何缩小。但是当我以咕unt咕min的表情缩小时,像这样:

uglify: {
        options: {
                report: 'min',
                mangle: false
        },
        dist: {
            files: {'app/dist/js/yanpy.min.js': [Many scripts, 'app/js/controllers/shopping-cart.js', more scripts]

我收到下一个错误:

ReferenceError: shoppingCart is not defined
    at Object.$get (yanpy.min.js:9)
    at Object.invoke (yanpy-libs-1.min.js:1)
    at yanpy-libs-1.min.js:1
    at getService (yanpy-libs-1.min.js:1)
    at invoke (yanpy-libs-1.min.js:1)
    at Object.instantiate (yanpy-libs-1.min.js:1)
    at yanpy-libs-1.min.js:2
    at yanpy-libs-1.min.js:2
    at forEach (yanpy-libs-1.min.js:1)
    at nodeLinkFn (yanpy-libs-1.min.js:2)

grunt文件中包含的shoppingCart脚本“ shopping-cart.js”用于缩小。该文件如下所示:

function shoppingCart(cartName) {
    this.cartName = cartName;
    this.clearCart = false;
    this.checkoutParameters = {};
    this.items = [];

    // load items from local storage when initializing
    this.loadItems();           
}

// load items from local storage
shoppingCart.prototype.loadItems = function () {

   // Do whatever
}

发生了什么事?当我缩小时为什么不工作而没有缩小时又为什么工作呢?

UPDATE_1:根据重复的标记,请注意,购物车不是有角度的模块,而只是一个JavaScript脚本。因此,不确定原始引用文章中提供的方法是否是真正的答案。

UPDATE_2:根据@UncleDave注释。我在引用shoppingCart的地方复制了两部分代码。

.directive('adminOfferExtras', function(Extra, ExtraService, LocationService, OfferService, DataService) {        

    function link(scope, element, attrs) { 

        var boatId = parseInt(scope.boat.id);
        var extrasCart = new shoppingCart("OfferBoatExtrasCart_" + boatId);

.factory("DataService", function () {

    // create shopping cart
    var myCart = new shoppingCart("Store");    
    return {
        cart: myCart
    };
})

请注意,看到购物篮引用的唯一其他地方是我已经复制的shopping-cart.js文件。也许这个呼叫应该标上var?

shoppingCart.prototype.loadItems = function () {

   // Do whatever
}

0 个答案:

没有答案