jQuery 依赖性高于 Angular 一个:警告:尝试加载 angular 不止一次
jQuery dependency above Angular one: WARNING: Tried to load angular more than once
我正在处理 Yeoman Angular 生成的文件夹。我通过 Bower 安装了一个需要 jQuery 的模块。 Grunt的wiredep将jQuery依赖放在了index.html
中的AngularJS之上,如下:
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
...
<!-- endbower -->
<!-- endbuild -->
这似乎是合理的,因为 jQuery 不依赖于 Angular。
问题是,当我尝试在浏览器中加载我的应用程序时,我在 JS 控制台中收到以下消息:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
VM80711:26293
WARNING: Tried to load angular more than once.
angular-animate.js:442 Uncaught TypeError: Cannot read property 'offsetWidth' of null
如果我手动将 jQuery
依赖项与 index.html
中的 angular
依赖项交换,一切都很好,但是当我 grunt build
我的应用程序时,默认顺序已设置,所以我无法在 dist 文件夹中获取工作配置。
bower.json
:
{
"name": "webapp",
"version": "0.1.0",
"dependencies": {
"angular": "^1.3.0",
"angular-animate": "^1.3.0",
"angular-resource": "^1.3.0",
"angular-sanitize": "^1.3.0",
"angular-touch": "^1.3.0",
"angular-ui-router": "~0.2.14",
"angular-material": "~0.9.0",
"restangular": "~1.5.1",
"angular-slick": "~0.2.1",
"ngInfiniteScroll": "~1.2.1"
},
"devDependencies": {
"angular-mocks": "^1.3.0"
},
"appPath": "app",
"moduleName": "app"
}
非常感谢您的帮助!
替代 removing/reordering jquery.js :
如果您的 index.html
使用 <ui-view />
然后尝试将其更改为: <ui-view></ui-view>
因为 HTML5 如何处理标签,如 SO post about tag syntax
中所述
其次,检查您的 routes
,如 SO post about referencing the view incorrectly :
中所述
示例:
templateUrl: 'myView/myPage.html'
检查拼写和大小写
我正在处理 Yeoman Angular 生成的文件夹。我通过 Bower 安装了一个需要 jQuery 的模块。 Grunt的wiredep将jQuery依赖放在了index.html
中的AngularJS之上,如下:
<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-animate/angular-animate.js"></script>
...
<!-- endbower -->
<!-- endbuild -->
这似乎是合理的,因为 jQuery 不依赖于 Angular。
问题是,当我尝试在浏览器中加载我的应用程序时,我在 JS 控制台中收到以下消息:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
VM80711:26293
WARNING: Tried to load angular more than once.
angular-animate.js:442 Uncaught TypeError: Cannot read property 'offsetWidth' of null
如果我手动将 jQuery
依赖项与 index.html
中的 angular
依赖项交换,一切都很好,但是当我 grunt build
我的应用程序时,默认顺序已设置,所以我无法在 dist 文件夹中获取工作配置。
bower.json
:
{
"name": "webapp",
"version": "0.1.0",
"dependencies": {
"angular": "^1.3.0",
"angular-animate": "^1.3.0",
"angular-resource": "^1.3.0",
"angular-sanitize": "^1.3.0",
"angular-touch": "^1.3.0",
"angular-ui-router": "~0.2.14",
"angular-material": "~0.9.0",
"restangular": "~1.5.1",
"angular-slick": "~0.2.1",
"ngInfiniteScroll": "~1.2.1"
},
"devDependencies": {
"angular-mocks": "^1.3.0"
},
"appPath": "app",
"moduleName": "app"
}
非常感谢您的帮助!
替代 removing/reordering jquery.js :
如果您的 index.html
使用 <ui-view />
然后尝试将其更改为: <ui-view></ui-view>
因为 HTML5 如何处理标签,如 SO post about tag syntax
中所述
其次,检查您的 routes
,如 SO post about referencing the view incorrectly :
示例:
templateUrl: 'myView/myPage.html'
检查拼写和大小写