firebase-tools: 6.3.0
Platform: macOS
I'm trying to deploy my Jekyll generated static site to my Firebase Hosting project. While all HTML, CSS and image files upload fine, the CLI fails while uploading any XML files.
I've got a feed.xml file generated by Jekyll in my public folder. I tried creating a very minimal sample XML file to test if my feed.xml was a problem. The new XML file broke the deployment as well.
jekyll build or just create a .xml file inside your public directoryfirebase deployAll files should get uploaded and the website deployed.
The deployment process fails with the following error:
[2019-01-22T07:43:54.505Z] [hosting] hash cache [X3NpdGU] load error: lines is not defined
[2019-01-22T07:43:54.550Z] [hosting] hash cache [X3NpdGU] stored for 65 files
[2019-01-22T07:43:54.551Z] [hosting][hash queue][FINAL] max=33, min=14, avg=22.323076923076922, active=0, complete=65, success=65, errored=0, retried=0, total=65, elapsed=45
[2019-01-22T07:43:54.551Z] >>> HTTP REQUEST POST https://firebasehosting.googleapis.com/v1beta1/sites/my-website/versions/468e526b5fbdb8ec:populateFiles
<request body omitted>
[2019-01-22T07:43:56.336Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Tue, 22 Jan 2019 07:44:09 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="44,43,39,35", accept-ranges=none, transfer-encoding=chunked
[2019-01-22T07:43:56.339Z] [hosting][populate queue][FINAL] max=1790, min=1790, avg=1790, active=0, complete=1, success=1, errored=0, retried=0, total=1, elapsed=1790
[2019-01-22T07:43:56.340Z] [hosting] uploads queued: 1
i hosting: uploading new files [0/1] (0%)
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:43:58.792Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2Up0b-5iFfKrO6lkPCzoxQaZZ6tOF5vUK30VrDVkz9qWYzasLAQ5V_HQ2Mg8xyrhc9rFEFLcLsmvLamBdllGQqKNzu688MvlFkcXpVFuRA6Zz8RENG0',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:11 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
[2019-01-22T07:43:59.198Z] [uploadQueue] Retrying task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:01.515Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2UpVnGh3eAHvHIphRMXt8f9FecPcvvBr3VRPu0BkB4LBxI-4vX4xarWCqiV-llDELBfW9PnNe9L7PZ8GXSKTwQxf4HoQ2A',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:14 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
[2019-01-22T07:44:02.315Z] [uploadQueue] Retrying task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004
i hosting: uploading new files [0/1] (0%)
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:05.448Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2Uq4oaE7rIQAmXEf_ak1l1gyaKmwB7zAtdB_Y-G-Dk-B8kxP9UiWu3dRyWFvRE2QB5CtKdfMN-JDfC-cERCGcAIAc4rpCQ',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:18 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:07.050Z] [uploadQueue] Retrying task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:10.238Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2Ur_eFZb3oFZXl1Ru8N5e9asnKL4uQcuHP_BlqYzrrRP2XHVEUkbuvxmjsXNo0NMwVt_addzG16MHqE8kfL0_ZRriisD_6GW2-vrEQsUILTTcW-C2RU',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:23 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
i hosting: uploading new files [0/1] (0%)
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:13.442Z] [uploadQueue] Retrying task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:15.688Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2UrGXxL8T7xc47Bczhjv9nYAQwpz4_kolQi43C2AtBOcuFbwwCvibSLPs5tYT1G6jL5pxp2DLW_FK0EnaeiHPNphLM_4-83gFOuV0_DNZp4osr2VS_Q',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:28 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
i hosting: uploading new files [0/1] (0%)
i hosting: uploading new files [0/1] (0%)
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:22.092Z] [uploadQueue] Retrying task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004
i hosting: uploading new files [0/1] (0%)
[2019-01-22T07:44:23.471Z] [hosting][upload] feed.xml (9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004) HTTP ERROR 400 : { 'x-guploader-uploadid':
'AEnB2UqRsRd3wzKSndlAR1A6PZZPBQizKjWUJJLewSKT5YohgTDpM5Re8wNmx2lOQrfBHitS2yQ-oHEt_xbUwc9nH03x5Ls6LiojqOkK5ifC_kd1161-mJk',
'content-length': '37',
date: 'Tue, 22 Jan 2019 07:44:36 GMT',
server: 'UploadServer',
'content-type': 'text/html; charset=UTF-8',
'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39,35"',
connection: 'close' } Couldn't process request (status=400)
[2019-01-22T07:44:23.472Z] [uploadQueue] Retries exhausted for task 9d5f902dfc336abc44b6abdfc3ddbcee4a265cc63cf6c6d67a5897549c5ef004: Error: Unexpected error while uploading file.
at Request._callback (/usr/local/lib/node_modules/firebase-tools/lib/deploy/hosting/uploader.js:197:39)
at Request.self.callback (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:185:22)
at Request.emit (events.js:188:13)
at Request.EventEmitter.emit (domain.js:441:20)
at Request.<anonymous> (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:1161:10)
at Request.emit (events.js:188:13)
at Request.EventEmitter.emit (domain.js:441:20)
at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:276:13)
at IncomingMessage.emit (events.js:193:15)
[2019-01-22T07:44:23.473Z] [hosting][upload queue][FINAL] max=0, min=9999999999, avg=0, active=0, complete=1, success=0, errored=1, retried=5, total=1, elapsed=27136
[2019-01-22T07:44:24.669Z] Error: Unexpected error while uploading file.
at Request._callback (/usr/local/lib/node_modules/firebase-tools/lib/deploy/hosting/uploader.js:197:39)
at Request.self.callback (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:185:22)
at Request.emit (events.js:188:13)
at Request.EventEmitter.emit (domain.js:441:20)
at Request.<anonymous> (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:1161:10)
at Request.emit (events.js:188:13)
at Request.EventEmitter.emit (domain.js:441:20)
at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/firebase-tools/node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:276:13)
at IncomingMessage.emit (events.js:193:15)
Error: An unexpected error has occurred.
I am unable to replicate this issue by simply creating an XML file. Can you provide more concrete reproduction steps or maybe a failing feed.xml file that you are using? It'd be great if you can start with an empty (or newly initialized) project and cause the error.
I'll try to test this on a fresh project as you suggested, in the meanwhile, here's the feed.xml file that's failing:
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2019-01-22T13:26:18+05:30</updated><id>http://localhost:4000/feed.xml</id><title type="html">Rahul Chowdhury</title><subtitle>Just a regular guy trying to be awesome.</subtitle><entry><title type="html">Hunting the little bugs</title><link href="http://localhost:4000/blog/little-bugs" rel="alternate" type="text/html" title="Hunting the little bugs" /><published>2019-01-22T00:00:00+05:30</published><updated>2019-01-22T00:00:00+05:30</updated><id>http://localhost:4000/blog/little-bugs</id><content type="html" xml:base="http://localhost:4000/blog/little-bugs"><p>About <strong>3 months</strong> ago, one of my friends got his first <strong>MacBook</strong>. Since then, he hadnāt been able to use <kbd>ā</kbd> + <kbd>A</kbd> to select all content anywhere within the whole system.</p>
<p>Yesterday, he finally got it fixed. It was neither a bug in the macOS nor a major mess that he had made. It was just a tiny setting that got lost in the <em>sea</em> of complex solutions.</p>
<p>One of the apps in his system had some shortcut mapped to <kbd>ā</kbd> + <kbd>A</kbd>. Finally, the <em>cause</em> of the mayhem.</p>
<p><img src="https://media.giphy.com/media/L8AdWkDNN8tO0/giphy.gif" alt="That one silly mistake" /></p>
<p>Coincidentally, I too had a similar experience. I had been stuck on a very simple <strong>JavaScript</strong> problem while developing my new blog platform <a href="https://airtyper.com" target="_blank">Airtyper</a>. Ultimately, after <strong>3 days</strong> of struggle, I fixed the issue.</p>
<p>This too was a <em>very simple</em> fix yet hard to find. š¤¦š»āāļø</p>
<p>Why are these little bugs hard to find?</p>
<p>Because we donāt think straight when we are stuck in a problem. We tend to <em>overlook</em> the simple solutions in favour of some complex ones. This is what gets us stuck in limbo.</p>
<p>We need to start thinking slow and hunt down our silly mistakes. Use a <em>microscope</em> rather than a telescope to track down these notorious little bugs.</p>
<p>Dull solutions are <em>sexy</em> because we sometimes like to be <em>dumb</em>.</p>
<p>Thank you for being an amazing reader. šš»</p></content><author><name></name></author><summary type="html">Sometimes, it's best to assume that we're just a bunch of dumb creatures</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://i.imgur.com/hcrGlTC.png" /></entry><entry><title type="html">What Harry Potter taught me about facing obstacles</title><link href="http://localhost:4000/blog/harry-potter-obstacles" rel="alternate" type="text/html" title="What Harry Potter taught me about facing obstacles" /><published>2019-01-21T00:00:00+05:30</published><updated>2019-01-21T00:00:00+05:30</updated><id>http://localhost:4000/blog/harry-potter-obstacles</id><content type="html" xml:base="http://localhost:4000/blog/harry-potter-obstacles"><p>It was a Sunday afternoon when I put down a hard copy of the book <strong>The Obstacle is the Way</strong> by Ryan Holiday. I had finally managed to finish it after a weekās struggle.</p>
<p>Right after I finished the book, I had a <em>eureka</em> moment. This is exactly what the famed author J.K. Rowling has been trying to tell us through her <strong>Harry Potter series</strong>.</p>
<p>Assuming youāve read Harry Potter, you would know what a <strong>Boggart</strong> is and familiar with the <a href="https://www.pottermore.com/explore-the-story/riddikulus" target="_blank">Riddikulus</a> charm. For those who are not familiar with these terms, hereās a quick primer on the subjects.</p>
<p>A boggart is a <strong>shape-shifter</strong>. It doesnāt have an identity or a shape of its own. When you face a boggart, it takes the shape of the thing you fear the most. If you fear snakes, then good luck in facing a boggart as itāll take the shape of the deadliest snake you can imagine when it comes face-to-face with you.</p>
<p>The Riddikulus charm, on the other hand, is a piece of magic that turns a boggart from its terrifying form to something <em>ridiculous</em>. In short, by casting a Riddikulus charm you can turn that deadliest snake of yours to something like an elephant on roller-skates.</p>
<p><img src="https://i.imgur.com/t2BzlYB.jpg" alt="Harry Potter and Professor Lupin on the Patronus charm" /></p>
<p>Now, the question is, what do all these have to do with obstacles?</p>
<p>Itās quite simple, <em>actually</em>.</p>
<p>Your obstacles are like a boggart. They can seem terrifying if you want to look at them that way. The moment you realise that they arenāt some mountain you canāt climb or not an unbreakable wall, they <em>lose</em> their power and becomes a mere stone in your path that you can easily step over.</p>
<p>Weāre bombarded with obstacles every day. If you start ranting about them all the time, youāre actually holding yourself back from progress. Stop judging your obstacles as a permanent roadblock and start seeing them as a <em>mere detour</em>.</p>
<p>Life will seem much easier and goals <em>attainable</em>.</p>
<p>And that, my friend, is your Riddikulus charm in real life. Available to you in unlimited supply. Use it all you want.</p>
<p>Thanks for reading this piece, youāre awesome. šš»</p></content><author><name></name></author><summary type="html">Itās only a matter of perspective. Choose wisely.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://i.imgur.com/t2BzlYB.jpg" /></entry><entry><title type="html">The big fat paycheque</title><link href="http://localhost:4000/blog/prized-paycheque" rel="alternate" type="text/html" title="The big fat paycheque" /><published>2019-01-20T00:00:00+05:30</published><updated>2019-01-20T00:00:00+05:30</updated><id>http://localhost:4000/blog/prized-paycheque</id><content type="html" xml:base="http://localhost:4000/blog/prized-paycheque"><p>An abundance of startup founders these days are under the impression that an illusion of a big fat paycheque is enough to make anyone join their <em>cause</em>.</p>
<p>Well, guess what? <em>It isnāt.</em> šš»</p>
<p>Last <strong>Tuesday</strong>, I got a similar call from the founder of a new startup here in Bangalore. I ended up saying no to their interview request after the call.</p>
<p>I like the idea of a potentially massive payout in the future. However, I donāt buy the idea of working long hours for a stranger for less money that Iām earning right now just because there <em>might</em> be a reward at the finish line.</p>
<p>Unless youāre my dearest friend or family, Iāll settle for more cash and fewer shares, thank you. šø</p>
<p><img src="https://media.giphy.com/media/3osxYamKD88c6pXdfO/giphy.gif" alt="Cash instead of shares" /></p>
<p>This isnāt the first time I turned down such an offer. Iāve let go of multiple offers in the past for what might be rocketing shares in companies in exchange for cold hard cash.</p>
<blockquote>
<p>The prize money is mostly an illusion because half the startup founders donāt know what theyāre doing.</p>
</blockquote>
<p>If Iām to gamble with my life then Iāll gamble when Iām calling the shots, not someone else. š²</p>
<p>What would you do in a similar situation?</p>
<p>Once again, thank you for reading this piece. šš»</p></content><author><name></name></author><summary type="html">Steer clear of the traps of these booby traps.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://media.giphy.com/media/3osxYamKD88c6pXdfO/giphy.gif" /></entry><entry><title type="html">Limitation as an advantage</title><link href="http://localhost:4000/blog/limitations" rel="alternate" type="text/html" title="Limitation as an advantage" /><published>2019-01-17T00:00:00+05:30</published><updated>2019-01-17T00:00:00+05:30</updated><id>http://localhost:4000/blog/limitations</id><content type="html" xml:base="http://localhost:4000/blog/limitations"><p>Okay, thatās a lot of Aās after a lonely L. But seriously, Iāve been moulding limitations to my advantage since my early high school days.</p>
<p>Lack of abundant pocket money pushed me into exploring freelance writing jobs at some of the leading online magazines back in those days. And boy, I did make some sweet money out of those jobs. It was a big deal to get a <strong>$100</strong> paycheque for a 17-year-old dude. šø</p>
<p><img src="https://media.giphy.com/media/KJB7GQwyuAtW/giphy.gif" alt="Getting that paycheque" /></p>
<p>Again, recently, I found myself accidentally discovering a financial management trick by limiting myself to the <em>free</em> version of a very popular expense tracking app.</p>
<p>Full disclosure, I fully support indie devs and small companies by usually paying for software or other services that I find useful. šš» This app, however, didnāt appeal to me with their <strong>Pro</strong> version because I didnāt need what they were offering under a monthly subscription.</p>
<p><a href="https://budgetbakers.com/" target="_blank">Wallet</a> app allows you to manage no more than <strong>2</strong> bank accounts at a time on their free version. Paying a monthly subscription just to add another bank account to the list didnāt make sense to me.</p>
<p>I decided to keep my savings account off the hook for the time being which turned out to be a bloody <em>brilliant</em> money management hack. Since I didnāt get to see how much money I have in my savings account, I was always under the impression that Iām low on funds and needed to spend carefully.</p>
<p>As an indirect result, my savings grew larger and expenses cut off by a reasonable amount. It was like a digital equivalent of putting money in an envelope and tucking it away somewhere safe.</p>
<p>How good is that? š</p>
<p>I know this might not be one of the top finance tips but every little bit helps.</p>
<p>Find your limitations. Turn them around into your <em>advantages</em>. Go be creative with your daily life.</p>
<p>And one more thing, thanks for being a lovely audience. šš»</p></content><author><name></name></author><summary type="html">Be creative about your limitations and transform them into solutions.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://media.giphy.com/media/KJB7GQwyuAtW/giphy.gif" /></entry><entry><title type="html">Why I finally got a credit card</title><link href="http://localhost:4000/blog/finally-credit-card" rel="alternate" type="text/html" title="Why I finally got a credit card" /><published>2019-01-14T00:00:00+05:30</published><updated>2019-01-14T00:00:00+05:30</updated><id>http://localhost:4000/blog/finally-credit-card</id><content type="html" xml:base="http://localhost:4000/blog/finally-credit-card"><p>Last <strong>February</strong>, I <a href="https://rahulchowdhury.co/blog/zero-credit" target="_blank">ranted</a> on this very blog as to why you shouldnāt get a credit card.</p>
<p>Yet, in around the month of <strong>November</strong>, the financial system convinced me otherwise.</p>
<p>You see, in <strong>December</strong>, I was about to get married. Weddings are a costly affair. Also, unfortunately, I hadnāt been much of a financial pro in my early days of employment.</p>
<p><strong>TL;DR</strong>, I needed a shit ton of money which I didnāt have.</p>
<p>Loans seemed to be my easy way out of this situation. Yet, when I started applying for a loan, nearly every bank showed me the door.</p>
<p>Why?</p>
<p>Because I <em>didnāt have</em> any credit score.</p>
<p>Why?</p>
<p>Because I never took out any loans and neither did I get a credit card for myself. And long gone are the days where banks examined your earning records and took a leap on loading you with money.</p>
<p>Itās all <em>numbers</em> now.</p>
<p>Kind of funny that I used to get calls from bank executives all year long to apply for a loan. When I actually did, they were like, āYeah, whatever! šā</p>
<p><em>Poor me.</em></p>
<p>After a month of running around and stressful nights, one of the banks decided to loan me the amount anyways. <strong>+1</strong> to ICICI Bank. š¦</p>
<p><img src="https://media.giphy.com/media/rjkJD1v80CjYs/giphy.gif" alt="Phew!" /></p>
<p>After this delightfully painful experience, regardless of my better judgement, I decided to go for a credit card. The catch here was that I would use it <em>only</em> like a debit card.</p>
<p>I would route most of my monthly expenses through the credit card but have the cash <em>reserved</em> in my bank account to pay the bill on the first day I get the statement.</p>
<p>Chances of misusing a credit card are low if you choose to use it like this. Also, if you have a wife whoās there to spank you in case you start being a bad kid. <em>Thank you, love.</em>š</p>
<p>Although, Iām yet to find out how well I can handle my shiny new credit card. š Another post on that soon enough (that is if I donāt have to sell this laptop to pay for my credit card bills š)</p>
<p>Thank you for reading this post. Youāre awesome! šš»</p></content><author><name></name></author><summary type="html">You should have one too if you can use it sensibly.</summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://media.giphy.com/media/rjkJD1v80CjYs/giphy.gif" /></entry><entry><title type="html">The Will of a Spider</title><link href="http://localhost:4000/blog/spiders-will" rel="alternate" type="text/html" title="The Will of a Spider" /><published>2018-06-14T00:00:00+05:30</published><updated>2018-06-14T00:00:00+05:30</updated><id>http://localhost:4000/blog/spiders-will</id><content type="html" xml:base="http://localhost:4000/blog/spiders-will"><p>There lives a spider in my bathroom. ItsĀ <em>glamorous</em>Ā web is stationed right above my washbasin between the wall and the handle of my liquid hand wash.</p>
<p>For days I didnāt notice the web. Neither did I track down the spider. The first day when I took note of this little establishment I immediately splashed it down.</p>
<p>Happy with my little cleaning, I went back feelingĀ <em>accomplished</em>. Little did I know that it wasnāt the end. For this wasĀ <strong>a tough spider</strong>.</p>
<p>As I entered my bathroom the very next day, I found a web identical to the one I had destroyed a day earlier. Same spot. The spider hadĀ <em>rebuilt</em>Ā its empire again.</p>
<p>I thought to myself, ā<em>Big deal, Iāll splash it again</em>ā. So I did, only to find out that the web has been restored the very next day as well.</p>
<p>For days, I kept destroying and the spider kept building. That was until I finally gave up.</p>
<p>The spiderās will to build proved to beĀ <em>greater</em>Ā than my will to destroy. It didnāt give up no matter how many times I wiped out its home.</p>
<h3 id="we-humans-have-a-lot-to-learn-from-the-other-species-lets-keep-learning-and-evolving">We humans have a lot to learn from the other species. Letās keep learning and evolving.</h3></content><author><name></name></author><summary type="html">Sometimes, an insect can prove to be better than a human.</summary></entry><entry><title type="html">Wait for it</title><link href="http://localhost:4000/blog/wait-for-it" rel="alternate" type="text/html" title="Wait for it" /><published>2018-05-09T00:00:00+05:30</published><updated>2018-05-09T00:00:00+05:30</updated><id>http://localhost:4000/blog/wait-for-it</id><content type="html" xml:base="http://localhost:4000/blog/wait-for-it"><p>Today I got aĀ <strong>MacBook Pro</strong>Ā at aĀ <em>slightly</em>Ā lower price because I waited.</p>
<p>You see,Ā <strong>Amazon</strong>Ā lists a product supplied by more than just one seller. The seller with the best offer usually makes the product page feature.</p>
<p>For the pastĀ <strong>2 weeks</strong>, the best offer was aroundĀ <strong>$250</strong>Ā more than what was the best offer before that time. The previous seller went out of stock.</p>
<p>Given that I had a few weeks before I actually needed the laptop, I decided to wait in case aĀ <em>better</em>Ā offer comes in. Today, that previous offer came back, from the same seller who listed the product aroundĀ <strong>2 weeks</strong>Ā back.</p>
<p>Without any further ado, I made the purchase. Waiting a few more daysĀ <em>saved</em>Ā me a lot of money.</p>
<h3 id="sometimes-somethings-are-worth-the-wait-wait-for-the-right-moment">Sometimes somethings are worth the wait. Wait for the right moment.</h3></content><author><name></name></author><summary type="html">Waiting for the right moment can sometimes prove to be beneficial.</summary></entry><entry><title type="html">First impression is not the last</title><link href="http://localhost:4000/blog/first-impressions" rel="alternate" type="text/html" title="First impression is not the last" /><published>2018-04-29T00:00:00+05:30</published><updated>2018-04-29T00:00:00+05:30</updated><id>http://localhost:4000/blog/first-impressions</id><content type="html" xml:base="http://localhost:4000/blog/first-impressions"><p>People say that first impressions are theĀ <em>last</em>. I beg to differ.</p>
<p>First impressions can often beĀ <em>misleading</em>.</p>
<p>You might judge someone to beĀ <strong>friendly</strong>,Ā <strong>nice</strong>,Ā <strong>trustworthy</strong>, andĀ <strong>decent</strong> while that person might turn out to beĀ <em>pure evil</em>Ā in the future.</p>
<p>Similarly, someone who might seem anĀ <strong>asshole</strong>Ā at first can turn out to be one of theĀ <em>best persons</em>Ā youāve ever met.</p>
<p>The point that Iām trying to make here is that donāt judge a person by their first impression. First impressions areĀ <em>not</em>Ā always an honest one. They can beĀ <em>framed</em>Ā or might be a screw-up out ofĀ <em>being nervous</em>.</p>
<p>Get to know a person and then judge. Itāll help you in selecting the right people to surround yourself with.</p>
<p><em>Time tells everything.</em>Ā Give people some time.</p>
<h3 id="while-it-might-seem-lucrative-dont-trust-your-first-impressions-they-often-lie">While it might seem lucrative, donāt trust your first impressions. They often lie.</h3></content><author><name></name></author><summary type="html">First impressions are not always the last one. Give people a chance.</summary></entry><entry><title type="html">Casualty List</title><link href="http://localhost:4000/blog/casualty-list" rel="alternate" type="text/html" title="Casualty List" /><published>2018-04-27T00:00:00+05:30</published><updated>2018-04-27T00:00:00+05:30</updated><id>http://localhost:4000/blog/casualty-list</id><content type="html" xml:base="http://localhost:4000/blog/casualty-list"><p>When youāreĀ <em>swamped</em>Ā with tasks to complete in a short time, what do you do?</p>
<p>Do you panic or do you suddenly get theĀ <em>superpower</em>Ā to glide through your tasks like a walk in the park?</p>
<p>If your answer is the latter then, well, youāre all set. However, for the rest of us, the first option is the one thatĀ <em>suits</em>Ā the best.</p>
<p>WeĀ <em>panic</em>, weĀ <em>stress</em>Ā out when weāre dumped with a shitload of tasks to complete in a day or in an hour.</p>
<p>What to do then?</p>
<p>Make yourĀ <strong>casualty list.</strong></p>
<p>What is a casualty list?</p>
<p>Itās a list of tasks that you canāt do or chooseĀ <em>not to do</em>Ā within the given time period.</p>
<p>Making a casualty list helps because sometimes itās impossible to check off all of your pending tasks at a given time. You have toĀ <em>sacrifice</em>Ā some to complete the ones that are your top priority.</p>
<p>The ones you sacrifice gets transferred to your casualty list.</p>
<p><em>Try it.</em></p>
<h3 id="when-youre-overwhelmed-with-tasks-at-hand-try-making-a-casualty-list-itll-help-you-remain-sane">When youāre overwhelmed with tasks at hand, try making a casualty list. Itāll help you remain sane.</h3></content><author><name></name></author><summary type="html">A casualty list helps you stay sane when youāre bombarded with things to do.</summary></entry><entry><title type="html">Using a To-Do list</title><link href="http://localhost:4000/blog/to-do-lists" rel="alternate" type="text/html" title="Using a To-Do list" /><published>2018-04-24T00:00:00+05:30</published><updated>2018-04-24T00:00:00+05:30</updated><id>http://localhost:4000/blog/to-do-lists</id><content type="html" xml:base="http://localhost:4000/blog/to-do-lists"><p>To-do lists have been around forĀ <em>decades</em>. Itās like havingĀ <strong>a personal assistant</strong>Ā telling us what should we be doing next.</p>
<p>The main problem with to-do lists is that they areĀ <em>hard to maintain</em>. For starters, you need to beĀ <em>disciplined</em>Ā to make one every day.</p>
<p>Sure, some might say that paper to-do lists work better for them than their digital counterparts but I donāt think thatās much of an issue.</p>
<p>I useĀ <a href="https://todoist.com/" target="_blank">Todoist</a>Ā to plan out my day and it worksĀ <em>just fine</em>.</p>
<p>The trick that I follow here is to plan out my list on the night before. That means Iāll plan out all the things that I need to do tomorrowĀ <em>by tonight</em>.</p>
<p>This saves you from theĀ <em>hurry</em>Ā to jot down your tasks in the morning. You wake up and you know what to do.</p>
<blockquote>
<p>Before you eat the elephant, make sure you know what parts you want to eat. <em>TODD STOCKER</em></p>
</blockquote>
<p>ItāsĀ <em>a habit</em>. Like every other habit, it takes time to develop.</p>
<p><em>Invest</em>Ā some time in this habit. Itāll help you in the long run.</p>
<h3 id="a-to-do-list-if-used-properly-can-save-you-from-a-lot-of-procrastination-make-one-daily">A to-do list, if used properly, can save you from a lot of procrastination. Make one, daily.</h3></content><author><name></name></author><summary type="html">To-do lists are not bullshit. Theyāre useful if you know how to use them.</summary></entry></feed>
I'm still unable to replicate this issue.
One thing I can suggest is to delete the cache that the cli creates when hashing files. From your project's root directory (where your firebase.json file lives, where firebase deploy is run), delete the .firebase/hosting.*.cache files (you can see them using ls -al .firebase/ on linux/osx). That _might_ help your situation, but nothing's sticking out to tell me that that is 100% the solution.
If you're unable to create a smaller reproduction case, please send a bug report through the Firebase Support page. There may be something happening on the backend side of things that's returning this 400, but we'll need more details from you which support can help gather. If you drop your case ID here, I can help bring it up with the team as well.
Thanks - and sorry I don't have a better answer off hand! :(
same problem here
@thb since we're unable to replicate this issue, please file a support ticket with info on your specific project and configuration - as @bkendall mentioned, it would help us to have more details.
@bkendall I tried your solution. Doesn't help. It's the same issue. The feed.xml file generated by Jekyll doesn't get uploaded.
Anyways, I've filed a report for the same. Hope this gets fixed soon.
Hey @rahulchowdhury. We need more information to resolve this issue but there hasn't been an update in 7 days. I'm marking the issue as stale and if there are no new updates in the next 3 days I will close it automatically.
If you have more information that will help us get to the bottom of this, just add a comment!
Since there haven't been any recent updates here, I am going to close this issue.
@rahulchowdhury if you're still experiencing this problem and want to continue the discussion just leave a comment here and we are happy to re-open this.
@rahulchowdhury @thb - I had this same issue. It turned out that it was because I had localhost URLs in my XML file. I see them in @rahulchowdhury's example feed.xml as well. Once I changed these to publicly routable hostnames, I was able to firebase deploy successfully.
Most helpful comment
@rahulchowdhury @thb - I had this same issue. It turned out that it was because I had localhost URLs in my XML file. I see them in @rahulchowdhury's example feed.xml as well. Once I changed these to publicly routable hostnames, I was able to
firebase deploysuccessfully.