2017-04-06 134 views
1

tl; dr如何在PhantomJS中删除此错误?只有在运行PhantomJS时获取失败的测试(TypeError)

回购

参考回购:https://github.com/Sawtaytoes/Tabletop-Helper/tree/d123927b8f65fc97234fd2543bf9103ac0db58ab

运行yarn test

问题

当运行Chrome的这些相同的测试VS 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不喜欢的功能是什么?

回答

1

缩小下来后,我能得到它,只显示

TypeError: undefined is not a constructor (evaluating 'Array.prototype.find') 

PhantomJS 2.1及以上不支持Array.prototype.find。将溶液通过NPM安装PhantomJS插件并在噶配置设置它:

ptim/phantomjs-polyfill-find 

一旦安装,配置噶需要修改。所述files属性的第一阵列参数可以被修改如下所示:

files: [ 
    `node_modules/phantomjs-polyfill-find/find-polyfill.js`, 
    ... 
], 

注:它在路径引用node_modules/

+1

此外,您还可以使用PhantomJS的更新版本(此版本的测试版本)[2.5版本](https://bitbucket.org/ariya/phantomjs/downloads/),该版本中包含更多的现代Webkit引擎。 – Vaviloff

相关问题