Jasmine Karma fails with 'ReferenceError: process is not defined'

Jasmine Karma fails with 'ReferenceError: process is not defined'

我最近从 Angular9 更新到 Angular12。更新后我的测试开始“失败”。我引用了它,因为测试本身似乎很好,但是在每个 运行 之后都有一个不是很有帮助的“错误”条目

Uncaught ReferenceError: process is not defined
ReferenceError: process is not defined
    at Object.71732 (http://localhost:9876/_karma_webpack_/webpack:/node_modules/util/util.js:109:1)
    at __webpack_require__ (http://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Object.89122 (http://localhost:9876/_karma_webpack_/webpack:/node_modules/assert/build/internal/assert/assertion_error.js:35:16)
    at __webpack_require__ (http://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Object.80469 (http://localhost:9876/_karma_webpack_/webpack:/node_modules/assert/build/assert.js:36:22)
    at __webpack_require__ (http://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at Module.82736 (http://localhost:9876/_karma_webpack_/main.js:2879:64)
    at __webpack_require__ (http://localhost:9876/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
    at webpackContext (http://localhost:9876/_karma_webpack_/webpack:/home/kewur/workplace/Project/project-app/src|sync|/\.spec\.ts$:111:1)
    at Array.map (<anonymous>)

我有点难过,因为错误非常含糊。我是否遗漏了一些我需要通过此升级承担的额外依赖性?我没有在我的代码中的任何地方引用进程,所以它所指的必须在 webpack 或 karma 中?

我最终不得不定义一个“模拟”过程对象。我认为 Angular 的较新版本(我目前是 12,从 9 开始)不包括 nodeJS 进程对象。

基本上,我在应用程序的根目录下添加了一个新的“测试”文件夹,并添加了一个名为 global-variables.js 的文件,其中包含此文件

   const process = {
  env: {
    NODE_ENV :'production'
  }
};

然后我在 karma.conf

中导入了带有 karma 的文件
files: [
  'test/global-variables.js',
]