在Bitbucket管道上运行的业力测试给出错误“找不到可变角度(和模块)”

时间:2019-03-06 06:12:56

标签: karma-runner bitbucket-pipelines

我正在尝试让Bitbucket管道适用于我的MEAN堆栈应用程序。

因此,我将MEAN堆栈框架克隆到了我的Bitbucket https://github.com/linnovate/mean中,并添加了以下bitbucket-pipelines.yml:

# This is a sample build configuration for JavaScript.
# Check our guides at https://confluence.atlassian.com/x/14UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:6.9.4

definitions: 
  services: 
    mongo: 
      image: mongo

pipelines:
  default:
    - step:
        caches:
          - node
        script: # Modify the commands below to build your repository.
          - npm install
          - npm test
        services: 
          - mongo
        deployment: test

但是当我运行测试时,我收到以下错误消息(请参见pastebin https://pastebin.com/TY6sBigB):

[36m06 03 2019 04:18:12.764:DEBUG [phantomjs.launcher]: [39mReferenceError: Can't find variable: angular

  http://localhost:9876/base/modules/users/client/views/settings/settings.client.view.html.js?7d60b7bc1406b1321039f3ea5f1c798982967142:5

PhantomJS 2.1.1 (Linux 0.0.0) ERROR
  An error was thrown in afterAll
  ReferenceError: Can't find variable: module in modules/articles/tests/client/list-articles.client.controller.tests.js (line 34)
  modules/articles/tests/client/list-articles.client.controller.tests.js:34:22
  <Jasmine>
  modules/articles/tests/client/list-articles.client.controller.tests.js:4:11
  <Jasmine>

Finished in 0.041 secs / 0 secs @ 04:18:12 GMT+0000 (UTC)

缺少的“模块”错误似乎显示在(admin.articles.client.routes.tests.js):

(function () {
  'use strict';

  describe('Articles Route Tests', function () {
    // Initialize global variables
    var $scope,
      ArticlesService;

    // We can start by loading the main application module
    beforeEach(module(ApplicationConfiguration.applicationModuleName));

'module'变量是@Types模块中定义的全局变量,但是我不确定这怎么会导致错误。

缺少的“角度”变量发生在:(articles.client.service.js)

(function () {
  'use strict';

  angular
    .module('articles.services')
    .factory('ArticlesService', ArticlesService);

哪个是在角度打字稿文件中定义的名称空间:export as namespace angular;

这是我的业力配置文件: https://pastebin.com/MVYyXAzV

还有我的package.json: https://pastebin.com/GEvTSi2A

1 个答案:

答案 0 :(得分:0)

您需要向您的package.json文件添加angular。 尝试npm install angular,然后提交您的package.json并推送到您的存储库。

可能看起来像这样

40   "dependencies": {                                                             
41     "acl": "^0.4.11",                                                           
42     "amazon-s3-uri": "0.0.3",                                                   
43     "angular": "^1.7.7",                                                    
44     "angular-mocks": "^1.7.7",                                                
45     "async": "~2.5.0",                                                   
46     "aws-sdk": "^2.415.0",                                                   
47     "body-parser": "^1.18.3",                                                   
48     "bower": "^1.8.8",                                                   

在package.json中

每当您看到这样的消息时,您就会知道您缺少依赖项,或者没有在某处定义变量。

在这种情况下,我们知道它是缺少的依赖项,因为在您的自定义代码中没有提及因果报应,因此我们必须假定因果测试运行器有效,或者为什么有人会推荐它。

仅供参考,您的许多依赖项看起来都像是dev依赖项,例如bower,并且您可能不应该出于各种原因(包括托管总成本)将它们置于生产环境中。您只希望Bitbucket管道在构建到生产服务器后推送应用程序运行所需的文件。

最终目标通常是运行运行在生产环境中的应用程序所需的最少代码量,而开发人员依赖关系仅用于构建和测试该代码。

例如,bower本质上就像npm一样是一个程序包管理器,但是一旦下载了所有程序包,就可以丢弃bower,同时将bower_components文件夹保留在生产环境中。显然,您还可以创建脚本来将bower_components缩减为仅包含所需部分的文件,然后丢弃bower_components文件夹,仅保留最低的生产量。

希望在某种程度上有帮助。