2015-01-16 228 views
0

我想通過命令行運行下面這個腳本使用與無瀏覽器的jQuery的node.js通過命令行

var argv = require('optimist').argv, 
$ = require('jquery'), 
fs = require('fs'); 
var file = argv._[0]; 
var html = fs.readFileSync(file, 'UTF-8'); 
$(html).find('p').each(function(index) { 
var content = $(this).html(); 
console.log('Paragraph ' + (index + 1) + ': ' + content); 
}); //script.js 

的命令是$ node script.js page.html其中page.html是參數

我得到的錯誤是:

./node_modules/jquery/dist/jquery.js:29 
       throw new Error("jQuery requires a window with a document"); 
Error: jQuery requires a window with a document 
at module.exports (./node_modules/jquery/dist/jquery.js:29:12) 
... 

我正在使用jquery-2.1.3。我知道這曾經是一次工作,但看起來事情已經改變了。

此外,我也按照http://rkulla.blogspot.com/2014/04/using-browserify-with-jquery-backbonejs.html的指示,但我仍然得到相同的錯誤。

任何幫助解決這個錯誤將不勝感激。非常感謝你!

回答

3

請參閱this answer。 jQuery的npm包不再包含jsdom,它提供了在服務器上使用jQuery所需的DOM環境。

另一方面,您可以使用cheerio(服務器的jQuery實現)解析html並使用jQuery的選擇器。

0
var argv = require('optimist').argv, 
$ = require('cheerio'), 
fs = require('fs'); 

var file = argv._[0]; 
... 

我無法安裝jsdom爲我的生活,所以我放棄了這一點,但cheerionpm install編輯的package.json後工作很順利)解決了這個問題(見代碼修改以上)。謝謝!