function getSitemapURLs( file ) {
var urls = [];
fs.readFile( file, ( err, data ) => {
if ( err ) throw err;
parser.parseString( data, ( err, result ) => {
result = result.urlset.url;
for ( var i = 0; i < result.length; i++ ) {
urlObj = result[i];
for ( var key in urlObj ) {
if ( 'loc' != key) continue;
// TODO: Improve how this key is accessed. Brittle.
urls.push(urlObj[key][0]);
}
}
});
});
return urls;
}
在需要该方法后,我正在从其他文件运行getSitemapURLs。如果我从console.log( urls )
闭包内parseString
返回了期望值,即URL数组。
当前,当从索引调用此函数时,我得到一个空数组。这似乎是我创建的一个范围界定问题。有人可以帮助我确定范围的正确范围,以便返回URL数组吗?
这是我的index.js文件的样子,它是从以下文件调用的:
// Utility Methods
const getDomainParts = require('./utility/sitemap.js').getDomainParts,
setSitemap = require('./utility/sitemap.js').setSitemap,
getSitemapURLs = require('./utility/sitemap.js').getSitemapURLs;
// Site Vitals
// Actual URL kept out of StackOverflow for privacy
const baseUrl = 'https://www.xyzurl.com';
const directory = getDomainParts( baseUrl );
// Init Tests
( async () => {
const sitemap = setSitemap( baseUrl, directory );
await sitemap;
const urls = getSitemapURLs(`./sites/${directory}/sitemap.xml`);
console.dir( urls );
} )();