【问题标题】:nodejs error when i try to run a file with jquery in it当我尝试运行包含 jquery 的文件时出现 nodejs 错误
【发布时间】:2014-01-17 22:54:00
【问题描述】:

当我跑步时 node script.js page.html 我有这个错误,我不知道为什么,我确实将 jquery 放在我的依赖项中并安装了它

C:\Users\NEBELYN\Desktop\projects1\paragraph\node_modules\jquery\dist\jquery.js:29

throw new Error("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>

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

    要解析 HTML 文本,您应该使用名为 Cheerio 的更简单的库,它具有类似 jQuery 的 API,但不使用 DOM。

    或者,您可以使用 JSDOM 在服务器上伪造浏览器 DOM(这会更慢)。

    【讨论】:

    • 谢谢,但我正在关注教程和编译的人员代码,我不知道为什么我的没有
    【解决方案2】:

    我的代码在一个月前运行良好,但是当我通过 npm 升级到最新的 jquery 时开始显示此错误。如果我只知道如何取回那个旧版本,那么问题就会消失。

    这似乎已经解决了:

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

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2011-07-12
      • 2011-06-02
      • 2021-02-15
      相关资源
      最近更新 更多