我正在使用Browserify
来包装所有内容。我刚刚从1.2.23
升级到1.3.0
,现在收到以下错误:
Firefox错误
TypeError: angular.module is not a function
var app = angular.module('login-Controller', ['Views']);
----------^
显然说没有定义角度。所以我输出了角度
的输出var angular = require('angular'),
console.info(angular); // Object {} ='s an empty object
这是否意味着角度不再与browserify
兼容?如果是的话,我怎样才能让它发挥作用?
Chrome的详细错误
Uncaught TypeError: undefined is not a function main.js:25868 C:\var\www\stage.mayfieldafc.com\src\site\js\users\loginCntrl.js.angularmain.js:1 smain.js:1 (anonymous function)main.js:28 ./src/site/js/app.js.angularmain.js:1 smain.js:1 emain.js:1 (anonymous function)
main.js:183 Uncaught Error: [$injector:modulerr] Failed to instantiate module mays due to:
Error: [$injector:nomod] Module 'mays' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.3.0/$injector/nomod?p0=mays
at http://localhost:3000/js/main.js:183:12
at http://localhost:3000/js/main.js:1900:17
at ensure (http://localhost:3000/js/main.js:1824:38)
at module (http://localhost:3000/js/main.js:1898:14)
at http://localhost:3000/js/main.js:4167:22
at forEach (http://localhost:3000/js/main.js:438:20)
at loadModules (http://localhost:3000/js/main.js:4151:5)
at createInjector (http://localhost:3000/js/main.js:4077:11)
at doBootstrap (http://localhost:3000/js/main.js:1587:20)
at bootstrap (http://localhost:3000/js/main.js:1608:12)
http://errors.angularjs.org/1.3.0/$injector/modulerr?p0=mays&p1=Error%3A%20…at%20bootstrap%20(http%3A%2F%2Flocalhost%3A3000%2Fjs%2Fmain.js%3A1608%3A12)main.js:183 (anonymous function)main.js:4190 (anonymous function)main.js:438 forEachmain.js:4151 loadModulesmain.js:4077 createInjectormain.js:1587 doBootstrapmain.js:1608 bootstrapmain.js:1502 angularInitmain.js:25682 (anonymous function)main.js:2845 triggermain.js:3116 eventHandler
标记
html(ng-app='mays)
答案 0 :(得分:12)
如@JeffB所述,您可以使用browserify-shim
(希望暂时)解决此问题。
首先,npm install --save-dev browserify-shim
。然后,将以下内容添加到package.json
:
"browserify": {
"transform": [
"browserify-shim"
]
},
"browser": {
"angular": "./node_modules/angular/angular.js"
},
"browserify-shim": {
"angular": "angular"
}
这应该让你require
并按预期访问Angular。
答案 1 :(得分:1)
问题是angular还没有更新他们的npm包以便与browserify兼容。
我的解决方案令人作呕,但其工作正常。我只是下载了v1.3.0
并将其粘贴到:
node_modules\angular\lib\angular.min.js
现在,browserify将编译并使用最新版本。我希望这是一个临时修复,直到他们更新包。
答案 2 :(得分:0)
您似乎将模块名称定义为“登录 - 控制器”'在你的剧本中,但称之为“mays'在你的标记中。我希望看到这样的事情:
//declare app in main.js
angular.module('name-of-app', [<modules>])
<!-- call your app in markup -->
<html ng-app="name-of-app"></html>
//jade
html(ng-app='name-of-app')