简体   繁体   English

从依赖项从package.json移到bower.json后,Angular无法识别jQuery

[英]Angular not recognizing jQuery after dependency move from package.json to bower.json

To start, I had angular , angular-bootstrap , and jquery in package.json and everything is compiled via browserify . 首先,我在package.jsonangularangular-bootstrapjquery ,所有内容都是通过browserify编译的。

// package
"dependencies": {
    "angular": "~1.4.6",
    "angular-bootstrap": "~0.12.2",
    "jquery": "~2.1.4"
}

angular-bootstrap does not have anything higher than 0.12.2 in NPM, so I switched ng-bootstrap over to bower.json angular-bootstrap在NPM中的值不高于0.12.2,因此我将ng-bootstrap切换到bower.json

// bower
"dependencies": {
    "angular-bootstrap": "~0.13.4"
}

And added aliases in my package.json 并在我的package.json添加了别名

// package
"browser": {
    "angular-bootstrap": "./bower_components/angular-bootstrap/ui-bootstrap.js",
    "angular-bootstrap-tpls": "./bower_components/angular-bootstrap/ui-bootstrap-tpls.js"
}

After doing all this, jQuery is still available in the global namespace (accessible in the browser console), but angular directives no longer seem to pick use jQuery . 完成所有这些操作后, jQuery在全局名称空间中仍然可用(可在浏览器控制台中访问),但是angular指令似乎不再选择使用jQuery

In my directive s if I log out the element or view its prototype ( element.__proto__ ) I only see the basic jqLite methods available, not the full jQuery that was available before I made the switch to bower (and that I see when looking at jQuery in the console). 在我的directive s中,如果我注销element或查看其原型( element.__proto__ ),我只会看到基本的jqLite方法可用,而不是在切换到jqLite可用的完整jQuery (并且在查看时控制台中的jQuery )。

// directive
.directive('myDirective', function() {
    return function(scope, element, attrs) {
        console.log(element);
        console.log(Object.getPrototypeOf(element)); // <-- No jQuery methods available, only jqLite
    }; 
});

I tried a few different ways of shimming dependencies, but I don't think this is necessary given that jQuery is loaded via package and not bower . 我尝试了几种不同的方式来填充依赖关系,但是考虑到jQuery是通过package而不是bower加载的,因此我认为这不是必需的。

// package
"browserify-shim": {
    "angular-bootstrap": {
        "depends": "jquery:jQuery"
    }
}

Any help would be appreciated - not sure what I'm missing here. 任何帮助将不胜感激-不确定我在这里缺少什么。

Here is what I have and jQuery is rightly resolved on top of jqlite: 这是我所拥有的,并且在jqlite之上正确解决了jQuery:

bower.json bower.json

  "dependencies": {
    "jquery": "2.1.4"
},
  "resolutions": {
    "jquery": "2.1.4"
}

package.json package.json

  "browserify": {
    "transform": [ "browserify-shim" ]
  },

 "browser": {
     "jquery": "./bower_repo/jquery/dist/jquery.js"
  },
  "browserify-shim": {
    "jquery": "$"
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM