2017-04-06 93 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

相關問題