【问题标题】:Testing Ionic with Jasmine and Karma - Uncaught ReferenceError: angular is not defined使用 Jasmine 和 Karma 测试 Ionic - 未捕获的 ReferenceError:未定义角度
【发布时间】:2015-05-20 17:53:41
【问题描述】:

长话短说,当我运行karma.conf.js 时,我看到了Uncaught ReferenceError: angular is not defined

我开始使用一个预先存在的 Ionic 项目......并添加一些单元测试。我是否需要检查我们的 www/index.html .. 我没有看到 angular.js 很奇怪.. 这是原因吗?

这个团队使用 maven 来构建,所以我担心在构建方面我们与社区的其他人不同步。

更新 1:在 www/index.html 的包含顶部添加 <script type="text/javascript" src="lib/js/angular/angular.js"></script> 无效。

更新 2:index.html 包含离子束 <script src="lib/js/ionic.bundle.js"></script>

Karma.conf.js

// list of files / patterns to load in the browser
files: [
    'www/lib/js/angular/angular.js',
    'www/lib/js/angular/angular-animate.js',
    'www/lib/js/angular/angular-animate.js',
    'www/lib/js/angular/angular-mocks.js',
    'www/lib/js/angular/angular-resource.js',
    'www/lib/js/angular/angular-sanitize.js',
    'www/lib/js/angular-ui/angular-ui-router.js',
    'www/lib/js/ionic.js',
    'www/lib/js/ionic-angular.js',
    'www/js/**/*.js',
    'www/test/jasmine/*.js'
],

【问题讨论】:

    标签: javascript angularjs ionic-framework ionic karma-jasmine


    【解决方案1】:

    Ionic 已经有 Angular,所以你不需要在外部添加 Angular。您可能应该删除<script type="text/javascript" src="lib/js/angular/angular.js"></script>

    并确保在依赖项中添加 Ionic

    angular.module('myApp', ['ionic'])
    

    并且:记得在您的index.html 中执行此操作

    <body ng-app="myApp"></body>
    

    *可以在body 标签或html 标签中,只要确保你添加了它。

    编辑

    正如@PSL 所说:Ionic Bundle 中包含 Angular。所以我想,你应该开始使用 Ionic Bundle,不要再担心了。

    如果您不使用 Ionic Bundle,请在您的索引中添加对 Angular 的引用,并进行我上面提到的声明。

    你的 karma 文件应该是这样的

    // list of files / patterns to load in the browser
        files: [
        //Angular source
        'lib/ionic/js/ionic.bundle.js',
        'lib/angular-mocks/angular-mocks.js',
        'lib/angular-local-storage/dist/angular-local-storage.js',
        'lib/ngCordova/dist/ng-cordova.js',
        'lib/ionic/js/angular-ui/angular-ui-router.js',
        'lib/angular-animate/angular-animate.js',
        'lib/angular-sanitize/angular-sanitize.js',
    
        //App code
        'js/*.js',
        'js/controllers/*.js',
        'js/services/*.js',
    
        //Test files
        'test/controllers/*.js'
        ],
    

    如果您没有使用上述某些文件,只需将其从数组 files: [] 中删除即可

    【讨论】:

    • @PSL 所以他应该使用离子束来停止担心它。
    • 是的,这是可能的......也许你可能想改写Ionic has Angular already, so you don't need to add Angular externally
    • 好的,我再次从 index.html 中删除了 angular.js 引用 index.html 看起来不错。 angular.module('myApp', ['ionic']) 看起来不错..
    • 在原始帖子中添加了有关离子束的更新。这可能是由于在我的karma.conf.js 中添加了angular.jsionic.js 吗??
    • 看看你的更新。因此,您使用的是 Ionic 捆绑包,您应该从 Index 中删除 angular。是的,这可能是一个原因。还要从那里删除那个 Angular 引用,当你引用离子包时,你不需要任何关于 Angular 主库的东西。
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2015-11-14
    • 1970-01-01
    相关资源
    最近更新 更多