0

我正在使用 phantomjs 解析 XML 站点地图以获取 URL,然后检查这些 URL 上的 Google Analytics 请求。

我写了一个 parsexml.js 文件,它工作正常,但我没有在我的 checkRequest.js 文件中将它用作模块

这是 parsexml.js 代码(工作正常):

var page = require('webpage').create(),
    urls, 
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
if (status !== "success") {
    console.log('Unable to access network');
    phantom.exit(1);
} else {
    urls = page.content.match(/<loc>(.*)<\/loc>/ig);
    output = '';
    if (urls == null) {
        console.log('Pas d\'URL dans le fichier');
    } else {
        urls.forEach(function(url) {
            url = url.replace(/<.*?>/g, '');
            sites = 'sites.push(' + url + ');';
            output = output + sites;
        });
    }
    console.log(output);
    phantom.exit();
}
});

以下是我尝试修改它以将其用作模块的方法:

exports.parsing = function () {
var page = require('webpage').create(),
    urls, 
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
if (status !== "success") {
        console.log('Unable to access network');
        //phantom.exit(1);
    } else {
        urls = page.content.match(/<loc>(.*)<\/loc>/ig);
        output = '';
        if (urls == null) {
            console.log('Pas d\'URL dans le fichier');
        } else {
            urls.forEach(function(url) {
                url = url.replace(/<.*?>/g, '');
                sites = 'sites.push(' + url + ');';
                output = output + sites;
            });
        }
        console.log(output);
        //phantom.exit();
    }
});
}

最后,我如何尝试在我的最终 js 文件中调用该模块:

var xml = require('./parseXML.js');
xml.parsing();

我一定错过了一些明显的东西,但我现在正在寻找几个小时,我真的很迷茫。

4

2 回答 2

0

通读此页面后,我想出了两个解决方案。首先,您只需将文件扩展名放在 require() 中:

var xml = require('./parsexml');
xml.parsing();

如果您想在外部文件中使用不同的名称调用函数,则第二种解决方案很有用。所以 parsexml.js 现在看起来像:

function parsing() {
var page = require('webpage').create(),
    urls,
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
    if (status !== "success") {
        console.log('Unable to access network');
        //phantom.exit(1);
    } else {
        urls = page.content.match(/<loc>(.*)<\/loc>/ig);
        output = '';
        if (urls == null) {
            console.log('Pas d\'URL dans le fichier');
        } else {
            urls.forEach(function(url) {
                url = url.replace(/<.*?>/g, '');
                sites = 'sites.push(' + url + ');';
                output = output + sites;
            });
        }
        console.log(output);
        //phantom.exit();
    }
});
}

function pinapples() {
    console.log("Pinapples.");
}

module.exports = {
    parsing: parsing,
    name_a_fruit: pinapples
};

checkRequest.js 看起来像:

var xml = require('./parsexml');
xml.parsing();
xml.name_a_fruit();

这应该输出:

“菠萝。无法访问网络”

于 2016-03-24T12:49:01.713 回答
-1
function parsing()
{ 
    // ... your function
}

module.exports = {

    parsing: parsing

}
于 2014-08-01T13:41:42.490 回答