奇怪的node.js错误:TypeError:对象#<Object>没有方法'on'

Avi*_*hai 5 javascript screen-scraping connect node.js

我正在尝试在node.js中运行一个简单的屏幕抓取应用程序.代码发布在这里:https : //github.com/anismiles/jsdom-based-screen-scraper http://anismiles.wordpress.com/2010/11/29/node-js-and-jquery-to-scrape -websites /

服务器启动正常,但是当我对它运行查询时,我收到以下错误.有谁知道那是为什么?

TypeError: Object #<Object> has no method 'on'
    at Object.<anonymous> (/Users/avishai/Downloads/anismiles-jsdom-based-screen-scraper-f0c79d3/searcher-server.js:9:10)
    at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
    at param (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:157:15)
    at pass (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10)
    at Object.router [as handle] (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:168:6)
    at next (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:218:15)
    at Server.handle (/Users/avishai/.node_libraries/.npm/connect/0.5.10/package/lib/connect/index.js:231:3)
    at Server.emit (events.js:45:17)
    at HTTPParser.onIncoming (http.js:1078:12)
    at HTTPParser.onHeadersComplete (http.js:87:31)
Run Code Online (Sandbox Code Playgroud)

似乎抛出错误的函数是:

function books(app){
    app.get('/:query', function(req, res, next) {

        res.writeHead(200, { 'Content-Type': 'text/html' });

        var rediff = require('./searcher-rediff');
        rediff.on('on_book', function(item){
            res.write(item + "<br/>");
        });
        rediff.on('completed', function(){
            res.end();
        });
        rediff.search(escape(req.params.query));

    });
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

现在我注意到在第一次请求时,我得到了这个:

SyntaxError: Unexpected strict mode reserved word
    at Module._compile (module.js:369:25)
    at Object..js (module.js:380:10)
    at Module.load (module.js:306:31)
    at Function._load (module.js:272:10)
    at require (module.js:318:19)
    at Object.<anonymous> (/Users/avishai/Downloads/anismiles-jsdom-based-screen-scraper-f0c79d3/searcher.js:2:15)
    at Module._compile (module.js:374:26)
    at Object..js (module.js:380:10)
    at Module.load (module.js:306:31)
    at Function._load (module.js:272:10)
Run Code Online (Sandbox Code Playgroud)

Ani*_*esh 1

这个错误背后的根本原因应该与EventEmittter. 请允许我解释一下,

\n
    \n
  1. searcher.js继承自EventEmitter\n(Line-26) Searcher.prototype = new process.EventEmitter

    \n
  2. \n
  3. searcher-rediff.jssearcher-flipkart.jssearcher-landmarkonthenet.js从 延伸searcher.js,因此它们也从 继承EventEmitter

    \n
  4. \n
  5. \xe2\x80\x98on\xe2\x80\x99 方法实际上是在EventEmitter.

    \n
  6. \n
\n

因此,我认为,由于某种原因,searcher.js无法继承EventEmitter,因此缺少方法 \xe2\x80\x98on\xe2\x80\x99 。

\n