【问题标题】:Using node.js with browserless jQuery via the command line通过命令行使用 node.js 和无浏览器 jQuery
【发布时间】:2015-01-17 09:05:38
【问题描述】:

我正在尝试通过命令行在下面运行此脚本

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 的说明进行操作,但我仍然遇到同样的错误。

任何解决此错误的帮助将不胜感激。非常感谢!

【问题讨论】:

    标签: javascript jquery html node.js


    【解决方案1】:

    this answer。 jQuery 的 npm 包不再包含 jsdom,它提供了在服务器上使用 jQuery 所需的 DOM 环境。

    另一方面,你可以只使用cheerio,一个用于服务器的 jQuery 实现,来解析 html 并使用 jQuery 的选择器。

    【讨论】:

      【解决方案2】:
      var argv = require('optimist').argv,
      $ = require('cheerio'),
      fs = require('fs');
      
      var file = argv._[0];
      ...
      

      我无法终生安装 jsdom,所以我放弃了,但 cheerionpm install 在编辑 package. json) 解决了这个问题(参见上面的代码修改)。谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-16
        • 1970-01-01
        • 1970-01-01
        • 2014-04-07
        • 2013-07-05
        • 2012-02-17
        • 1970-01-01
        • 2010-10-07
        相关资源
        最近更新 更多