AngularJS 找不到具有最新 RequireJS 的模块
Posted
技术标签:
【中文标题】AngularJS 找不到具有最新 RequireJS 的模块【英文标题】:AngularJS cannot find module with latest RequireJS 【发布时间】:2012-10-12 11:55:38 【问题描述】:我刚刚升级到 RequireJS 2.1.1 - 我正在加载一个 AngularJS 应用程序。在主定义运行之前,我从 Angular 获得“无模块:应用程序”。
它在 RequireJS 2.0.1 上运行良好。知道可能发生了什么变化吗?
这里是 public/index.html
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8">
<title>AngularJS</title>
<link rel="stylesheet" href="css/style.css"/>
<script data-main="main" src="requirejs/require.js"></script>
</head>
<body>
<div ng-view></div>
</body>
</html>
这里是 public/main.coffee
require.config
shim:
underscore: exports: '_'
ngResource:
exports: 'angular'
deps: ['angular']
angular:
exports: 'angular'
deps: ['jquery']
jquery: exports: 'jQuery'
paths:
underscore: 'underscore/index'
angular: 'AngularJS/angular'
ngResource: 'angular-modules/resource'
jquery: 'jquery/jquery'
# Bootstrap angularjs using requirejs.
define [], (require) ->
angular = require 'angular'
ngResource = require 'ngResource'
TestCtrl = require 'controllers/TestCtrl'
## ROUTER ###########
app = angular.module 'app', ['ngResource'], ($routeProvider) ->
$routeProvider.when '/test', templateUrl: 'partials/test.html', controller: TestCtrl
$routeProvider.otherwise redirectTo: '/test'
return app
【问题讨论】:
【参考方案1】:在这种情况下,您应该手动引导 angular 并删除 ng-app 属性,因为该模块在 dom 就绪时不可用:
angular.bootstrap document, ['app']
在定义函数的末尾
【讨论】:
有趣。它仍然会引发 no module 错误,但随后会加载应用程序。看起来还是很奇怪。你知道 2.0 和 2.1 之间发生了什么变化吗? 如果我还删除了 html 标签上的 ng-app 声明,它可以正常工作 我仍然不明白为什么我需要这样做。我不应该在不调用引导程序的情况下让它工作吗? 因为自动引导需要你的 Angular 模块在 DOM 上准备好,而 RequireJS 不能保证 谢谢!刚刚花了半天的时间来理解为什么我有这些错误消息,因为我的 DOM 中有 ng-app!【参考方案2】:你需要添加这个js文件:angular-resource.js
【讨论】:
以上是关于AngularJS 找不到具有最新 RequireJS 的模块的主要内容,如果未能解决你的问题,请参考以下文章