我對JS完全陌生,完全停留在Node Cheerio上。如果有人能幫助我,我將不勝感激。Cheerio(node.js)在html上返回錯誤
我正在處理的代碼是:https://github.com/zafartahirov/bitstarter。
(找不到的代碼將在找到修復程序後稱爲grader.old.js)。
當我運行
node ./grader.js --file index.html --checks checks.json | less
我收到一個錯誤:
TypeError: Cannot call method 'utf8Slice' of null
at Buffer.toString (buffer.js:416:26)
at exports.isTag (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/lib/utils.js:15:14)
at Function.filter (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/node_modules/lodash/dist/lodash.js:3150:15)
at /home/ubuntu/GitHub/bitstarter/node_modules/cheerio/lib/api/traversing.js:9:26
at Function.reduce (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/node_modules/lodash/dist/lodash.js:3734:25)
at exports.find (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/lib/api/traversing.js:8:17)
at new module.exports (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/lib/cheerio.js:92:18)
at initialize (/home/ubuntu/GitHub/bitstarter/node_modules/cheerio/lib/static.js:23:12)
at checkHtmlFile (/home/ubuntu/GitHub/bitstarter/grader.js:59:23)
at Object.<anonymous> (/home/ubuntu/GitHub/bitstarter/grader.js:76:21)
(END)
有什麼建議?
我想我找到了解決辦法,但我還是不明白的東西: 'VAR cheerioHtmlFile =功能(HTMLFILE){VAR 緩衝= fs.readFileSync(HTMLFILE); return cheerio.load(buffer.toString()); // return cheerio.load(fs.readFileSync(htmlfile)); };' 我仍然不明白爲什麼我必須將緩衝區轉換爲字符串。 – RafazZ
在這種情況下,我強烈建議閱讀http://www.joelonsoftware.com/articles/Unicode.html –
謝謝!我一定會這樣做! – RafazZ