Angular не распознает karma.conf. js - PullRequest
0 голосов
/ 14 апреля 2020

В коммерческом проекте тесты в течение некоторого времени выполнялись нормально. Мы вырезали релиз в Angular 8. На главном компьютере мы обновили до Angular 9. Теперь релизу нужно исправление, поэтому я проверяю ветвь и запускаю тесты. Это все в одном каталоге repo / file system.

Сбой, как Angular core has no exported member ɵɵFactoryDef, и я быстро определяю, что ошибка вызвана несовместимостью версии CLI .

Поэтому я удаляю ng CLI глобально и переустанавливаю npm i -g @angular/cli@8.2.0, в соответствии с выпуском ветки пакета. json. Теперь вышеуказанная ошибка исчезла, но когда я пытаюсь ng test, CLI настаивает на том, что karma.conf не существует. Единственная проблема заключается в том, что, вроде бы, он полностью существует.

Другие вещи, которые я пробовал:

  1. rm -rf и npm i с нуля
  2. npm cache verify
  3. закрыть и заново открыть терминалы
  4. перезагрузить компьютер
  5. создать новый файл karma.conf с другим именем и указать angular. json для этого

ng cli уважает angular. json в том смысле, что приведенная ниже ошибка изменится в зависимости от имени и пути моего файла кармы, но при этом в MacOS продолжает настаивать на том, что приведенный ниже файл не не существует: На Ма c я все еще получаю: ERROR [config]: File /Users/<various paths that totally exist>/src/karma.<tried different things here>.js does not exist!

Есть идеи? Спасибо !!

--- Редактирование: добавление технической информации ниже для каждого запроса.

тестовый блок из angular.json:


                "test": {
                    "builder": "@angular-devkit/build-angular:karma",
                    "options": {
                        "main": "src/test.ts",
                        "polyfills": "src/polyfills.ts",
                        "tsConfig": "src/tsconfig.spec.json",
                        "codeCoverage": true,
                        "karmaConfig": "src/karma.conf.js",
                        "scripts": ["node_modules/jquery/dist/jquery.js", "node_modules/jquery-mockjax/dist/jquery.mockjax.js"],
                        "assets": [
                            "src/favicon.ico",
                            {
                                "glob": "**/*.html",
                                "input": "./src/legacy",
                                "output": "./"
                            }
                        ]
                    }
                }

Частичная структура клиентской папки. Обратите внимание, что storybook/ и test/ являются братьями и сестрами src/, а angular. json на один уровень выше `src /. Я уже пробовал некоторые мутации пути кармы, включая:

  1. "karmaConfig": "./src/karma.conf.js",
  2. "karmaConfig": "../../<correct folders>src/karma.conf.js",
  3. "karmaConfig": "src/karma.<change this>.js",

partial angular client folder structure

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Это закончилось для меня решением после шагов, упомянутых в вопросе:

  1. Удалить весь репо
  2. Повторно клонировать (на самом деле, я сделал мелкий клон git clone <repo-url>.git --branch <ng8-branch> --depth 5
  3. Установить заново npm i

Теперь ng test работает как положено.

0 голосов
/ 14 апреля 2020

Возможно, вы уже прошли эту проверку, но пытались ли вы обновить package.json, чтобы путь karma.conf был примерно таким ...?

"scripts": {
    "test": "karma start ./path_to_karma.conf.js"
}
...