角 16:
在 VSCode 中安装或尝试运行 Karma Test Explorer 时,出现以下错误:
Failed to load tests - Test discovery failed: Browser Error - An error was thrown in afterAll
Uncaught ReferenceError: global is not defined
ReferenceError: global is not defined
at Object.7836 (http://localhost:9976/_karma_webpack_/webpack:/node_modules/buffer/index.js:43:30)
at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
at Module.1021 (http://localhost:9976/_karma_webpack_/vendor.js:9566:64)
at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
at Module.6938 (http://localhost:9976/_karma_webpack_/vendor.js:13832:79)
at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
at Module.1529 (http://localhost:9976/_karma_webpack_/vendor.js:27:84)
at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
at Module.9694 (http://localhost:9976/_karma_webpack_/main.js:8153:69)
at __webpack_require__ (http://localhost:9976/_karma_webpack_/webpack:/webpack/bootstrap:19:1)
有很多关于创建 polyfills.ts 或 js 文件或您自己的文件以及进行导入和添加此代码的帖子
(window as any).global = window;
(window as any).process = {
env: { DEBUG: undefined },
};
这些文件并将引用放置在 karma/Angular 等配置文件中。无论我做什么,我都会遇到同样的错误。不幸的是,我需要这些全局变量用于 AWS Amplify,因此我必须在某处声明它们。我可以使用 polyfills.ts 或 index.html。
但是,在另一个项目中,我没有 karma.config、test.ts、polyfills.ts,也没有在任何地方定义全局变量,并且在该项目中,Karma Test 资源管理器运行良好。我在问题项目中删除了所有这些文件和配置以及对这些配置的引用,希望它能有所帮助,但事实并非如此。我必须保留放入index.html 中的全局变量。
有人知道如何解决这个问题吗?人工智能工具也无法提出可行的解决方案。我的项目至少运行得很好。我只是无法对其进行单元测试。
事实证明我的全局定义很好。有很多可能的地方可以放置这些全局变量。问题是我没有在足够多的地方指出全局变量的来源。我有一些,但不是全部。在我的例子中,我将它们放置在 polyfills.ts 文件中:
我需要在
angular.json
文件中添加两个条目,
在“构建”下
"polyfills": [
"zone.js",
"src/polyfills.ts"
],
在“测试”下
"polyfills": [
"zone.js",
"zone.js/testing",
"src/polyfills.ts"
],
tsconfig.app.json
文件中的一个条目,
"files": [
"src/main.ts",
"src/polyfills.ts"
],
以及
tsconfig.spec.json
文件中的一项。
"include": [
"src/**/*.spec.ts",
"src/**/*.d.ts",
"src/polyfills.ts"
]
我没有将该条目放入
tsconfig.spec.json
文件中。