Тест Karma, запущенный на конвейере Bitbucket, выдает ошибку «не удается найти переменную угловую (и модуль)» - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь заставить конвейер 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, но я не уверен, как это может вызвать ошибку.

Отсутствующая переменная angular встречается в: (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 голосов
/ 06 марта 2019

Вам необходимо добавить angular в ваш файл package.json. попробуйте 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",                                                   

в вашем пакете. Json

Каждый раз, когда вы видите подобные сообщения, вы будете знать, что у вас отсутствует зависимость или вы не определяете переменную где-либо.

В этом случае мы знаем, что это отсутствующая зависимость, потому что в вашем пользовательском коде для кармы нет упоминания об angular, и мы должны предположить, что работает тестер кармы, или почему кто-то порекомендовал бы его.

К вашему сведению, многие ваши зависимости выглядят как зависимости dev, например, bower, и вам, вероятно, не следует помещать их в производственную среду по разным причинам, включая общую стоимость хостинга. Вы только хотите, чтобы конвейеры битового сегмента передавали файлы, необходимые для запуска приложения, после сборки на рабочий сервер.

Конечной целью, как правило, является наименьшее количество кода, необходимого для запуска приложения, работающего в рабочей среде, и зависимости dev просто создают и тестируют этот код.

Например, bower, по сути, менеджер пакетов, как и npm, но как только он загрузит все пакеты, bower можно будет выбросить, сохранив папку bower_components в рабочем состоянии. Очевидно, что вы также можете создавать сценарии, чтобы свести ваши bower_components к файлам только с теми частями, которые вам нужны, и выбросить папку bower_components, сохранив при этом минимум работы.

Надеюсь, это чем-то поможет.

...