tl; dr 如何在PhantomJS中删除此错误?
参考回购:https://github.com/Sawtaytoes/Tabletop-Helper/tree/d123927b8f65fc97234fd2543bf9103ac0db58ab
运行yarn test
。
当从Chrome与PhantomJS运行这些相同的测试时,我发现错误显示与Webpack捆绑包相关,或者我认为。
TypeError: undefined is not a constructor (evaluating '__WEBPACK_IMPORTED_MODULE_3_content_smash_up_decks__["a" /* sets */].find(function (set) { return title === set.title; })')
sets
.find(set => title === set.title)
.decks
.reduce((combined, { title }) => ({ ...combined, [title]: setState }), {})
特别突破的是sets.find()
。如果我把它留下并制作sets[0]
,它就可以了。在注销sets.find()
的值时,它总是返回一个匹配的数组,因为编写的测试是为了传递有效的集合标题。
具有类似错误的其他两个测试也引用sets.find()
。 PhantomJS不喜欢这个功能是什么?
答案 0 :(得分:1)
在缩小范围之后,我能够让它只显示
TypeError: undefined is not a constructor (evaluating 'Array.prototype.find')
PhantomJS 2.1及更早版本不支持Array.prototype.find
。解决方案是通过npm安装PhantomJS插件并在Karma配置中进行设置:
ptim/phantomjs-polyfill-find
安装后,需要修改Karma配置。可以像这样修改files
属性的第一个数组参数:
files: [
`node_modules/phantomjs-polyfill-find/find-polyfill.js`,
...
],
注意: 必须在路径中引用node_modules/
。