Я пытаюсь использовать v5.1.0 из npm sitemap
пакета для создания индекса карты сайта.
У меня уже есть этот рабочий код, который просто создает карту сайта:
const { createSitemap } = require('sitemap')
function getSitemap(hostname, urls) {
const s = createSitemap({
hostname, urls,
cacheTime: config.SITEMAP_CACHE_TIME_SECS * 1000,
});
return s.toXML(function(err, xml) {
if (err) return reject(err);
resolve(xml);
});
}
exports.routes = function(app) {
app.get("/sitemap.xml", function(req, res) {
Promise.all([
entity.Template.allPublicShowcaseURLs(),
entity.User.allPublicShowcaseURLs(),
]).then(([showcase_urls, profile_urls]) => {
return getSitemap(config.URL, showcase_urls.concat(profile_urls));
})
.then(serveXML(res))
.catch(utils.fail(req, res));
});
};
Теперь я пытаюсь изменить его для создания индекса карты сайта, следуя документации (что на самом деле не очень понятно).
Это то, что я пытаюсь вместо этого:
const { createSitemapsAndIndex } = require('sitemap')
function getSitemap(hostname, urls) {
const smi = createSitemapsAndIndex({
hostname, urls,
cacheTime: config.SITEMAP_CACHE_TIME_SECS * 1000,
targetFolder: require('os').tmpdir()
});
console.log('smi', smi)
return smi.toXML(function(err, xml) {
if (err) return reject(err);
resolve(xml);
});
}
Но это не так с smi.toXML is not a function
. Консоль показывает, что smi
является Promise { <pending> }
в этой точке. Я думаю, что, возможно, эта функция возвращает Promise, потому что она хочет что-то записать в файловую систему (?). Я пытался прочесть источник , но не могу его понять.
Полагаю, мне нужно решить Обещание, получить все, что он возвращает, и затем превратить это в XML - но как?