Angular v15 npm run test завершается сбоем на машине CI/CD с ошибкой «Uncaught TypeError: __webpack_require__(…).context не является функцией»

После обновления Angular с версии 14 до версии 15 я увидел, что Angular CLI удалил строки из файла src/test.ts. Строки были:

      declare const require: {
    context(path: string, deep?: boolean, filter?: RegExp): {
        <T>(id: string): T;
        keys(): string[];
    };
};

и

      // Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().forEach(context);

Это, конечно, привело к локальному сбою команды «npm run test», потому что тестовые файлы не были явно переданы Angular. Поэтому я добавил строки обратно, и все заработало локально. Машина CI/CD больше не может запускать команду «npm run test». Команда выводит на стандартный вывод следующее:

      29 11 2022 13:00:59.161:INFO [karma-server]: Karma v6.3.20 server started at http://localhost:9876/
29 11 2022 13:00:59.167:INFO [launcher]: Launching browsers ChromeHeadlessNoSandbox with concurrency unlimited
29 11 2022 13:00:59.172:INFO [launcher]: Starting browser ChromeHeadless
29 11 2022 13:00:59.649:INFO [Chrome Headless ip.ip.ip.ip (Linux x86_64)]: Connected on socket sockedId with id ID
Chrome Headless ip.ip.ip.ip (Linux x86_64): Executed 0 of 0 SUCCESS (0 secs / 0 secs)
Chrome Headless ip.ip.ip.ip (Linux x86_64) ERROR
  An error was thrown in afterAll
  Uncaught TypeError: __webpack_require__(...).context is not a function
  TypeError: __webpack_require__(...).context is not a function
      at Object.4289 (http://localhost:9876/_karma_webpack_/webpack:/src/test.ts:25:25)
      at __webpack_require__ (http://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
      at __webpack_exec__ (http://localhost:9876/_karma_webpack_/main.js:67164:48)
      at http://localhost:9876/_karma_webpack_/main.js:67165:54
      at Function.__webpack_require__.O (http://localhost:9876/_karma_webpack_/webpack:/webpack/runtime/chunk loaded:23:1)
      at http://localhost:9876/_karma_webpack_/main.js:67166:56
      at webpackJsonpCallback (http://localhost:9876/_karma_webpack_/webpack:/webpack/runtime/jsonp chunk loading:34:1)

Не знаю, что создает эту проблему. Кэш на машине CI/CD очищен.

Попытался добавить обратно строки, удаленные угловым обновлением из v14->v15, и это устранило проблему локально, а не на машине CI/CD.

РЕДАКТИРОВАТЬ/ОБНОВИТЬ: «ng test» теперь случайным образом перестал работать и на моей локальной машине. Я повозился с файлами конфигурации test.ts, angular.json и karma.conf.js и снова удалил строки, которые Angular CLI ранее удалил из test.ts. Теперь тесты можно было проводить локально. Теперь тесты также можно было запускать на машине CI/CD. Странный...

2 ответа

Посмотрите здесь . Ответ мне помог, я ничего не нашел об этих изменениях, внесенных в файл test.ts!

У меня была эта проблема, и я исправил ее только после сравнения моего кода с их стартовым проектом: https://angular.io/generated/live-examples/testing/stackblitz.html .

В Angular 15 они вообще удалили test.ts. Вы должны удалить файл, а затем отредактировать свой Angular.json, чтобы он не ссылался на него (просто удалите параметр «main»: «src/test.ts»).

Другие вопросы по тегам