Jasmine Karma 失败并显示“ReferenceError:进程未定义”

kew*_*wur 9 karma-jasmine karma-webpack angular

我最近从 Angular9 更新到 Angular 12。更新后我的测试开始“失败”。我对此进行了引用,因为测试本身似乎很好,但是每次运行后都会出现一个“错误”条目,这不是很有帮助

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>)
Run Code Online (Sandbox Code Playgroud)

我有点困惑,因为错误非常模糊。我是否缺少此升级所需的一些额外依赖项?我没有在代码中的任何地方引用 process,所以它所指的内容必须在 webpack 或 karma 中?

kew*_*wur 13

我最终不得不定义一个“模拟”流程对象。我认为 Angular 的较新版本(我目前使用的是 9 版,现在是 12 版)不包含 nodeJS 进程对象。

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

   const process = {
  env: {
    NODE_ENV :'production'
  }
};
Run Code Online (Sandbox Code Playgroud)

然后我在 karma.conf 中导入了这个带有 karma 的文件

files: [
  'test/global-variables.js',
]
Run Code Online (Sandbox Code Playgroud)