2016-01-16 47 views
24

Tôi đang cố gắng tổ chức dự án của mình để làm cho dự án trở nên dễ bảo trì hơn. Tôi có một số lượng lớn các mẫu html và buộc phải đặt tất cả chúng trong thư mục công cộng. Tôi thực sự muốn tổ chức nó như thế nàyFirebase - Đưa tệp vào nhiều thư mục

public directory 
    views 
    index.html 
    register.html 
    terms.html 
    privacy.html 
    support.html 
    stylesheets 
    styles.css 
    scripts 
    script.js 
    authentication.js 

nhưng thay vào đó nó trông như thế này

public 
    index.html 
    register.html 
    terms.html 
    privacy.html 
    support.html 
    script.js 
    authentication.js 
    styles.css 

Đây là firebase.json tập tin của tôi

{ 
    "firebase": "funmathgame", 
    "public": "mathgame", 
    "ignore": [ 
    "firebase.json", 
    "**/.*", 
    "**/node_modules/**" 
    ] 
} 

Dưới đây là thông báo lỗi tôi nhận được

Không tìm thấy trang

Tệp không tồn tại và không tìm thấy số index.html trong thư mục hiện tại hoặc 404.html trong thư mục gốc.

Tại sao tôi thấy điều này?

Bạn có thể đã triển khai sai thư mục cho ứng dụng của mình. Kiểm tra số firebase.json của bạn và đảm bảo thư mục công khai trỏ đến thư mục chứa tệp index.html.

Bạn cũng có thể thêm 404.html vào thư mục gốc của trang web để thay thế trang này bằng trang lỗi tùy chỉnh.

Cấu trúc đầu tiên tốt hơn vì nó phân tách mã. Cấu trúc này hoạt động bất cứ khi nào tôi chạy các tệp trong trình soạn thảo văn bản của mình. Tuy nhiên, nó không hoạt động bất cứ khi nào tôi triển khai đến firebase.

Như một ví dụ, đây là cách tôi sẽ tham khảo stylesheets tôi

<head> 
    <title>Frequently Asked Questions</title> 
    <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'> 
    </link> 
<link rel='stylesheet' href='../stylesheets/styles.css'></link> 

Trong cấu trúc thư mục trên, tôi đang ở thư mục public/views. Tôi sử dụng .. để chuyển lại một thư mục vào thư mục công cộng và sau đó chuyển tiếp vào thư mục stylesheets. Tuy nhiên, ở đây tập tin index.html của tôi không nằm trong thư mục công cộng, mà là thư mục public/views.

Tôi đã xem trang web Firebase nhưng vẫn không thể tìm thấy bất kỳ ý tưởng nào.

https://www.firebase.com/docs/hosting/guide/full-config.html

+2

Bạn chạy lệnh nào? Trong thư mục nào bạn chạy lệnh đó? Và những gì có trong firebase.json trong thư mục đó? –

Trả lời

9

Nếu bạn sẵn sàng có /views/index.html trong thanh địa chỉ của ứng dụng, bạn chỉ có thể làm một chuyển hướng từ / bằng cách thêm một yếu tố redirects-firebase.json của bạn. Ngoài ra, có vẻ như thuộc tính public của bạn có thể không chính xác. Vì vậy, thay đổi tập tin của bạn để firebase.json:

{ 
    "firebase": "funmathgame", 
    "public": "public", 
    "ignore": [ 
    "firebase.json", 
    "**/.*", 
    "**/node_modules/**" 
    ], 
    "redirects": [ 
    { 
     "source": "/", 
     "destination": "/views/index.html", 
     "type": 302 
    } 
    ] 
} 

Bằng cách này, bất kỳ người dùng đi vào https://funmathgame.firebaseapp.com/ sẽ được chuyển đến https://funmathgame.firebaseapp.com/views/index.html và tất cả các liên kết URL sẽ được giải quyết một cách chính xác.

+0

Nó chỉ là công bằng mà tôi trao giải thưởng tiền thưởng đầy đủ cho bạn. –

+0

@RichardHamilton Cảm ơn bạn. – heenenee

6

Đây là một vấn đề khó khăn.Khi bạn triển khai lên Firebase, Firebase đang tìm kiếm tệp index.html bên trong thư mục công cộng của bạn. Thư mục công cộng này còn được gọi là thư mục gốc.

Tôi đã làm việc với một ứng dụng góc cạnh và tôi chỉ đơn giản là sử dụng các đường dẫn sai trong partials của tôi. Điều này khá là khó khăn.

Tôi phải thiết lập bộ điều khiển góc, đã tiêm phụ thuộc $document để lấy tiêu đề của trang. Nếu tiêu đề của trang khớp với tiêu đề của trang gốc, tôi sẽ sử dụng ng-href để thêm thư mục views vào url tương đối.

Nếu không, nếu bạn ở trong thư mục lượt xem và tìm kiếm nhiều lượt xem hơn, nó sẽ hiển thị đường dẫn như views/views/page1.html. Đó là lý do tại sao chúng tôi có một điều kiện khác nhau là ng-href.

Đây là những gì chuyển hướng của tôi trông giống như

<ul class='nav navbar-nav'> 

     <li><a ng-href="{{ page == home ? 'views/help.html' : 'help.html' }}">Help</a></li> 
     <li><a ng-href="{{ page == home ? 'views/achievements.html' : 'achievements.html' }}">Achievements</a></li> 
     <li><a ng-href="{{ page == home ? 'views/scores.html' : 'scores.html' }}">Scores</a></li> 
     <li><a ng-href="{{ page == home ? 'views/shop.html' : 'shop.html' }}">Shop</a></li> 
     <li><a ng-href="{{ page == home ? 'views/faq.html' : 'faq.html' }}">FAQs</a></li> 
     <li><a ng-href="{{ page == home ? 'views/related.html': 'related.html' }}">More Games</a></li> 
</ul> 

Cuối cùng, cấu trúc thư mục của tôi trông như thế này

public 
    assets 
    stylesheets 
     styles.css 
    views 
    partials 
     scripts.html 
     header.html 
     footer.html 
    page1.html 
    ... 
    scripts 
    controllers 
    script1.js 
    ... 
    index.html 

Có thể đặt file index trong thư mục quan niệm ấy, nếu bạn thay đổi tệp firebase.json.

{ 
    "firebase": "firebase-app", 
    "public": "root/views", 
    "ignore": [ 
     "firebase.json", 
     "**/.*", 
     "**/node_modules/**" 
    ] 
} 

Bạn chỉ cần thay đổi từ khóa công khai trong ứng dụng firebase. Phải mất rất nhiều xung quanh, bởi vì tôi quên tôi đã có điều kiện thay đổi đường dẫn. Ngoài ra, để điều hướng trở lại vào thư mục trước, bạn sẽ phải làm một cái gì đó giống như ../

2

Tôi nghĩ rằng trang web này có thể trợ giúp cho bạn: https://www.firebase.com/blog/2014-08-12-switching-to-firebase.html

Đặc biệt,

Kể từ khi căn cứ hỏa lực nhập khẩu một đơn tệp và một số dịch vụ xuất nhiều tệp, tôi đã tạo một tập lệnh python tiện dụng để chuyển đổi nhiều tệp thành một tệp Firebase được vệ sinh.

Các vấn đề liên quan