JS错误为:var没有定义。 我如何发送函数的价值

现在我有这个代码来创buildsitemap.xml,当我运行/sitemap.xml

database = firebase.database(); var ref = database.ref('urls'); ref.on('value', gotData, errData); function errData(err){ console.log('Error!'); console.log(err); } function gotData(data){ result = data.val() return Object.keys(result) .filter(key => result[key].last_res > 5) .map(key => ({url: '/' + result[key].url_site + '/'})); var urls = gotData(data); } 

当我尝试在gotData(数据)函数中运行console.log(url)时,它返回为

 { salmon: { count: 1, last_res: 10, url_site: 'salmon' }, 'salmon-food': { count: 1, last_res: 601, url_site: 'salmon-food' } } 

我需要在gotData(data)中返回'urls'来创buildsitemap.xml。

 var sitemap = sm.createSitemap({ hostname: 'xxx.com', cacheTime: 600000, urls: urls }); app.get('/sitemap.xml', function(req, res) { sitemap.toXML( function (err, xml) { if (err) { return res.status(500).end(); } res.header('Content-Type', 'application/xml'); res.send( xml ); }); }); } 

但现在它的错误在var = sitemap as

 urls: urls -> urls is not defined 

那我该如何解决呢?

您正在分配和返回一行。 您需要定义variables然后返回它,或者直接返回结果而不分配给variables。

 return Object.keys(result) .filter(key => result[key].last_res > 5) .map(key => ({url: '/' + result[key].url_site + '/'})); 

目前还不清楚你在哪里定义你在sm.createSitemap()函数中传递的urlsvariables。 确保它在您定义var sitemap的范围内。

您很可能错过了类似于以下内容的一行:

 var urls = gotData(data);