nodejs错误,当我尝试运行jquery中的文件

也当我运行节点script.js page.html我有这个错误,我不知道为什么,我没有把我的依赖jquery和它安装它

C:\用户\ NEBELYN \桌面\ projects1 \款\ node_modules \ jQuery的\ DIST \的jquery.js:29

抛出新的错误(“jQuery需要一个带有文档的窗口”);
^错误:jQuery需要一个带有文档的窗口

at module.exports (C:\Users\NEBELYN\Desktop\projects1\paragraph\node_modules\jquery\dist\jquery.js:29:1 at Object.<anonymous> (C:\Users\NEBELYN\Desktop\projects1\paragraph\script.js:9:1) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3 

这里是正在运行的代码

 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); }); 

这里是page.html

 <html> <body> <p>Apple</p> <span>Unrelated</span> <p>Orange</p> <div> Steak </div> <p>Banana</p> </body> </html> 

jQuery需要一个完整的DOM实现,而这在服务器上是没有的。

要parsingHTML文本,你应该使用一个叫做Cheerio的简单库,它有一个类似于jQuery的API,但不使用DOM。

或者,你可以使用JSDOM来伪造服务器上的浏览器DOM(这是较慢的)。

我有一个月前工作得很好的代码,但是当我通过npm升级到最新的jquery时,开始显示这个错误。 如果我只知道如何恢复旧版本,那么问题就会消失。

这似乎已经解决了它:

 npm install jquery npm install jsdom // Define window var jsdom = require("jsdom"); var window = jsdom.jsdom().createWindow(); var $ = require("jquery")( window );