2017-09-15 108 views
2

我使用Node.js開始一個新項目,我想知道是否有任何方法來管理從cheerio.load()函數返回的內容。 我試圖使用回調和承諾(然後趕上),但它沒有工作。Cheerio錯誤處理程序節點js

例如:

var $ = cheerio.load(html); 
//what if it's falied ???? how I can handle it? 

我問這個,因爲我試圖運行腳本藪時間,但有時它的工作,有時沒有。

BTW: 我使用cheerio模塊從故宮網站 - >npm install cheerio.

感謝:-)

+0

只要你給它傳遞一個字符串,它就應該做SOMETHING。從技術上講,HTML中沒有語法錯誤。 (如果你在HTML文件中做了一些奇怪的事情,這取決於你的瀏覽器來糾正它,並繼續加載文件)。你能提供一個「不工作」的例子嗎?你通過了什麼?它有什麼作用? – Sidney

+0

'/home/ubuntu/workspace/node_modules/cheerio/lib/parse.js:55 var oldParent = node.parent || node.root, ^ TypeError:無法讀取null的屬性'parent' –

+1

在'var $ = cheerio.load(html);'之前,添加以下行:'console.log(html)'。你剛剛發佈的錯誤通常意味着你將*不是字符串*傳遞給cheerio。 'console.log'會告訴你希望'html'在cheerio加載之前就好了。 – Sidney

回答

1

可以使用try/catch塊,因爲你不知道,如果cheerio操作會成功。

const cheerio = require('cheerio') 

try { 
    const $ = cheerio.load(html) 
} catch (e) { 
    console.log(e) // handle error 
} 

console.log('continue script')