2013-12-18 29 views
0

tl; dr當在實習生中寫入測試時發生錯誤時,我似乎無法獲得描述發生錯誤的行的錯誤消息。我找到了一種解決方法,但它並不是真正理想的解決方案,因爲它涉及到在依賴項目中的代碼搞亂。有沒有人有更好的方法/我只是做錯了嗎?謝謝!實習生中的測試解析錯誤不包括描述錯誤的行

詳細信息: 我曾多次看到,如果解析在實習生中編寫的測試(例如未能關閉括號,引號等)時發生錯誤的實際行未報告時出現問題,而只有這樣的錯誤(我的埋入在實際的路徑作爲它的一個工作項目,但你的要點):

SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

我戳周圍有點,發現有一個vm.runInThisContext的未公開(? - 其不在here)參數中,如果啓用該參數實際上提供了原始錯誤的詳細信息(herehere) - 有關於這將如何發揮出來一些討論,但如果切換在伊斯坦布爾的dojo.js和hook.js(如果它運行)使用此參數,我得到的錯誤信息是這樣的:

<myproject>/test/publisherConfigSpec.js:16 errorCb cat = dfd.rejectOnError(function(error) { ^^^ SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

這是我想要的輸出(或者至少可以大幅度提高我發現和修復錯誤的機會),但它不適合與節點依賴關係搞混,而且在我看來,它可能過多對於拉取請求(請參見most recent update to the API)解析測試代碼輸入時是否存在錯誤,是否有另一種獲得有用輸出的方法?

感謝您的任何意見:)

回答

0

導入Node.js提供的SyntaxError輸出顯然不是很大,但是我們可能不會在任何官方使用無證功能(他們沒有證件是有原因的!)實習生的發佈使其工作方式不同。非語法錯誤(運行時錯誤)將被Intern捕獲並報告給您正在使用的任何記者。在這種情況下,我建議你使用一個包含對語法檢查支持的編輯器:Komodo Edit/IDE,WebStorm,SublimeText,Eclipse,vim ...如果你試圖在語法上運行無效的代碼,你的代碼編輯器沒有及時告訴你,你犯了一個錯誤。

+0

嘿公平點,我使用崇高/ IntelliJ,但我只是覺得令人驚訝的是,輸出不幫你找到錯誤。我不希望你使用(輕度可怕)黑客,我只是想知道是否有另一種方式,但你是對的,使用IDE工作正常。感謝您的反饋意見! – user82116

+0

哦,我猜想在一個真正的項目中,我也會通過grunt將它與jshint聯繫起來,所以我甚至都沒有從命令行那麼遠 - 它實際上只是嘗試了它。 – user82116