2017-06-07 13 views
8

मेरे पास फ़ायरबेस होस्टिंग का उपयोग करके एक पॉलिमर वेबपैप तैनात है।Uncaught SyntaxError: Identifier 'baseUrl' को पहले ही घोषित किया जा चुका है

विचारों के बीच रूटिंग काम करता है लेकिन त्रुटि पृष्ठ हैंडलिंग नहीं है।

https://fir-polymer-404-issue.firebaseapp.com/

उदाहरण के लिए, यदि आप निम्न URL खोलने, त्रुटि:

मैं आधिकारिक बहुलक-2-स्टार्टर किट उदाहरण का उपयोग एक न्यूनतम उदाहरण पर समस्या को ठीक करने सफल रहा है पेज प्रदर्शित नहीं किया जाता:

https://fir-polymer-404-issue.firebaseapp.com/not-existing

इसके बजाय, मैं नीचे त्रुटि मिलती है:

my-not-existing.html:56 Uncaught SyntaxError: Identifier 'baseUrl' has already been declared 
    at my-not-existing.html:56 
(anonymous) @ my-not-existing.html:56 

विन्यास फाइल firebase.json पिछले उदाहरण के लिए इस्तेमाल किया यहाँ है:

{ 
    "hosting": { 
    "public": ".", 
    "rewrites": [ 
     { 
     "source": "**", 
     "destination": "/index.html" 
     } 
    ] 
    } 
} 

मैं त्रुटि पेज से निपटने पॉलिमर द्वारा बनाई गई है करना चाहते हैं।

कृपया ध्यान दें कि polymer serve द्वारा समर्थित एक ही ऐप ठीक से काम करता है।

ऐसा लगता है कि समस्या फ़ायरबेस होस्ट कॉन्फ़िगरेशन से आती है। सभी ट्रैफ़िक index.html पर रीडायरेक्ट किए जाते हैं, इसलिए जब पॉलिमर एक मौजूदा पृष्ठ लोड नहीं करता है, तो फ़ायरबेस सर्वर HTTP 200 प्रतिक्रिया देता है। दुर्भाग्यवश, मुझे नहीं पता कि समस्या को कैसे ठीक किया जाए।

{ 
    "hosting": { 
    "public": ".", 
    "redirects": [ 
     { 
     "source": "**", 
     "destination": "/index.html", 
     "type": 200 
     } 
    ] 
    } 
} 

दुर्भाग्य से, प्रकार संपत्ति केवल 3xx कोड के लिए इस्तेमाल किया जा सकता:

Error: HTTP Error: 400, hosting.redirects[0].type is not one of enum values: 301,302,303,304,305,307,308 

मैं केवल निम्नलिखित विन्यास फाइल के साथ गैर 404 प्रतिक्रिया के लिए एक पुनर्निर्देशन बनाने की कोशिश की है

कृपया यह भी ध्यान दें कि एक कस्टम 404.html फ़ाइल placed at the root है।

एकमात्र समाधान जो मैं देखता हूं वह सभी मौजूदा मार्गों (प्रति फ़ाइल) को सूचीबद्ध करना है, लेकिन यह सिर्फ पागल दिखता है।

कोई भी विचार स्वागत है।

+0

मैंने गैर मौजूदा यूआरएल पर 304 देखा। क्या आपने इसे अपडेट किया? –

+0

नहीं, विन्यास फाइल _firebase.json_ को छुआ नहीं गया है। – Laurent

उत्तर

3

कारण न firebase या बहुलक अपने 404 पेज को संभालने के लिए जा रहा है कि जब आप एक गैर-मौजूद पृष्ठ का अनुरोध, यह केवल स्थिति कोड 200 साथ वापस जाने के लिए नहीं जा रहा है लेकिन यह भी की HTML के साथ वापस जाने के लिए जा रहा है है index पृष्ठ, तो यह कुछ प्रदर्शित करेगा, हालांकि कुछ वास्तव में कुछ भी नहीं है।

अब जिस तरह से बहुलक स्थापित किया गया है, यह src फ़ोल्डर में विचारों को देखता है, इसलिए आप केवल रूट पर पुनः लिखना चाहते हैं और src फ़ोल्डर में नहीं। तो अपने firebase.json

{ 
    "hosting": { 
     "public": ".", 
     "rewrites": [{ 
      "source": "/*", 
      "destination": "/index.html" 
     }] 
    } 
} 

एकल * फ़ाइलों लेकिन सबफ़ोल्डर नहीं मतलब होगा होना करने के लिए बदलने के लिए, यह आपके routeing काम करने के लिए यदि आप इसे पता पट्टी में प्रवेश लेकिन अगर पेज नहीं मिला है 404 नियंत्रित किया जाएगा अनुमति देगा बहुलक मार्ग से। मैंने उदाहरण के लिए बहुलक स्टार्टर पैक का उपयोग कर फायरबेस एप्लिकेशन स्थापित किया है।

https://testforsoissue.firebaseapp.com/view2

काम करेगा और view2 के लिए ले जाएगा के रूप में प्रारंभिक अनुरोध index.html वापस जाने के लिए फिर से लिखा दिया जाएगा, लेकिन के लिए /src/my-view2.html नहीं होगा

एक मार्ग है कि परिभाषित नहीं है जबकि अनुरोध

https://testforsoissue.firebaseapp.com/not-existing

404 (बहुलक में) फेंक देगा क्योंकि प्रारंभिक अनुरोध फिर से index.html लौटने के लिए फिर से लिखा जाएगा लेकिन फिर से /src/my-not-existing.html के लिए खोज खुशी से 404 फेंक नहीं देगा!

पीएस त्रुटि 'baseUrl' has already been declared' का कारण है इस तथ्य के कारण करने के लिए पेज लगता है दो बार index.html जो शीर्ष

संपादित

पर baseurl वाणी आप उपपथ है, तो उपयोग कर रहा था जैसे आप firebase.json की तरह उपयोग कर सकते हैं तो

{ 
    "hosting": { 
     "public": ".", 
     "rewrites": [{ 
      "source": "!/src/*", 
      "destination": "/index.html" 
     }] 
    } 
} 
+0

आपकी मदद के लिए धन्यवाद। हालांकि, क्या होता है यदि URL में subpaths जैसे 'https: // testforsoissue.firebaseapp.com/view2/myId' शामिल हैं। उस स्थिति में, ऐसा लगता है कि पॉलिमर अब अनुरोध को संभालने में सक्षम नहीं होगा क्योंकि index.html के पुनर्निर्देशन subpaths के लिए सेट नहीं है। एक वास्तविक ऐप परिदृश्य में, जैसे कि मैं निर्माण करने की कोशिश कर रहा हूं, यह एक मुद्दा है। – Laurent

+0

@Laurent मेरा संपादन देखें – George

+1

अच्छा लगता है, बहुत बहुत धन्यवाद। – Laurent

-1

documentation के अनुसार, आपको हैंडलिंग करने की आवश्यकता नहीं है; बस 404 बनाएं।एचटीएमएल:

You can specify a custom 404/Not Found error to be served when a user tries to access a page that does not exist. Simply add a 404.html page to the your project's public directory and the contents of this page will be displayed when Firebase Hosting needs to display a 404 Not Found error to the user.


baseurl त्रुटि से बचने के लिए, आपको कोड की इस पंक्ति के लिए उपयोग किया है, तो:

baseUrl = baseUrl || document.querySelector('base').href;

:

let baseUrl = document.querySelector('base').href;

के लिए यह बदलने का प्रयास करें

यह बहुत साफ नहीं है, लेकिन इसके बारे में शिकायत नहीं करनी चाहिए मूल्य पहले ही परिभाषित किया जा रहा है।

हालांकि मुझे लगता है कि यह आपकी समस्या से संबंधित नहीं है और उचित 404 पृष्ठ परिभाषित होने के बाद यह त्रुटि दिखाना बंद कर सकता है।

+0

आपकी मदद के लिए धन्यवाद। मैंने आपके 2 सुझावों का पालन करके परियोजना को अपडेट किया है, लेकिन जैसा कि आप देख सकते हैं, कोई भी मदद नहीं करता है। दुर्भाग्यवश, कस्टम [त्रुटि पृष्ठ] (https://fir-polymer-404-issue.firebaseapp.com/404।एचटीएमएल) वापस नहीं किया जाता है जब डिफ़ॉल्ट _wrex.html_ को फिर से लिखता है और यह अंतिम स्लैश-पृथक पथ वाले पॉलिमर का उपयोग करने की आवश्यकता है। – Laurent

संबंधित मुद्दे

 संबंधित मुद्दे