Karma测试失败报错Store.prototype.__proto__ = EventEmitter.prototype; 原因排查
关于Karma测试中
Store.prototype.__proto__ = EventEmitter.prototype;报错的原因分析 我来帮你拆解这个问题,通常这个报错主要来自以下几个常见场景:
__proto__的环境兼容性问题
__proto__虽已纳入ES6规范,但旧版本浏览器(比如IE10及更早)、老版无头浏览器(如PhantomJS 1.x)并不支持该属性。如果你的Karma测试配置使用了这类旧运行环境,代码执行时就会因无法识别__proto__而抛出错误。代码检查工具的限制
不少项目会在Karma测试流程中集成ESLint、TSLint这类代码质量检查工具。若你的配置启用了禁止使用__proto__的规则(比如ESLint的no-proto规则),测试时就会直接触发报错——因为__proto__被认为是不够健壮、不推荐的写法。EventEmitter未正确加载或引用错误
若EventEmitter未被正确导入到测试环境,比如你用的是Node.js的events.EventEmitter但未通过Browserify/Webpack等工具打包到浏览器环境,或是引用路径错误导致EventEmitter.prototype为undefined,给Store.prototype.__proto__赋值undefined也会引发错误。
额外提个小建议:现在更推荐用Object.setPrototypeOf(Store.prototype, EventEmitter.prototype),或者在构造函数内结合Object.create的方式实现原型继承,这两种写法兼容性更好,也更符合现代JavaScript的规范。
内容的提问来源于stack exchange,提问作者Brad Parks
相关产品推荐
相关产品推荐

