2014-09-19 64 views
2

我有以下的主機配置一個火力點應用:「公共電話簿警告 - 公共目錄是空的」的火力部署

{ 
    "firebase": "the-world-table", 
    "public": "app", 
    "ignore": [ 
    "firebase.json", 
    "**.*", 
    "**/node_modules/**" 
    ] 
} 

的應用程序目錄不爲空(它有一個index.html和一個javascript文件在其中)。然而,當我部署我得到以下警告:

Preparing to deploy Public Directory... 
Public Directory Warning - Public directory is empty, removing site 
progress: 100% 
Sucessfully removed 

而當我瀏覽到靜態文件,他們沒有找到。任何想法這裏有什麼不對?

+0

不會忽略'** *'不顧一切? – Kato 2014-09-20 23:11:27

+0

@Kato是的。見下面的討論。 – cayblood 2014-09-29 19:18:28

回答

4

你無視規則似乎有點過度熱心的從目錄中刪除的文件指定要部署:

,而不是默認**/.*忽略它匹配任何子文件夾包含.所有文件規則字符,則您指定的規則**.*與要部署的包含.的文件夾的根目錄中的所有文件相匹配,在這種情況下,此文件不會有任何內容。如果您刪除此行或添加/,您應該看到您期望的行爲。

docs on the subject覆蓋glob pattern matching的基本知識,並提供一些進一步的引用,

+0

謝謝@ chris-raynor。我從文檔中的例子中得到了這一點,並沒有仔細研究它。更好的例子可能值得更新文檔。 – cayblood 2014-09-23 20:59:11

2

它看起來像你想部署一個空目錄。

public屬性應該對應於您的公共文件,如index.html駐留。

有一對夫婦的方式來解決這個問題:

1.更改配置爲指向您的公開內容

變化firebase.json指向正確的位置。例如,如果你的HTML文件在同一目錄firebase.json,你的配置可能是這樣的:

{ 
    "firebase": "the-world-table", 
    "public": ".", 
    "ignore": [ 
    "firebase.json", 
    "**.*", 
    "**/node_modules/**" 
    ] 
} 

2.目錄結構相匹配你的配置

這裏有一個例子目錄結構將與您firebase.json配置工作:

- project/ 
    - README.md 
    - firebase.json 
    - app/ 
     - index.html 
+0

謝謝@ jenny-tong。實際上,我的應用程序的組織方式與您在選項2中描述的一樣。應用程序目錄包含一個index.html文件和一個JavaScript文件,這就是爲什麼我感到困惑,因爲它不起作用。 – cayblood 2014-09-20 00:13:02

+0

請在下面看@我的評論@ jenny-tong。看起來我在firebase-tools中發現了一個錯誤。 – cayblood 2014-09-20 02:52:49

-2

貌似我firebase.json發現的火力點工具的錯誤。將「忽略」部分中指定的文件視爲與「public」中指定的目錄相關。如果您在「忽略」部分中指定不存在的文件,那麼即使在開始部署之前它也會停止,併發出類似上面的錯誤。

+0

如果您在Firebase中發現了一個錯誤,請聯繫Firebase支持團隊,以便我們修復它:https://www.firebase.com/docs/help/#section-request – mimming 2014-09-22 18:47:58

+1

好的,我已經提交了一個描述錯誤的電子郵件。 – cayblood 2014-09-22 20:29:48

+0

非常感謝!一旦我們找到答案,我會更新我的答案。 – mimming 2014-09-23 20:29:41

-1

的問題是如何使用新消防基地。

npm install -g firebase-tools ok

firebase init ok
firebase deploy

問題:

Warning: Public directory does not contain index.html

Error: Must have at least one file in public directory to deploy.

如何設置主機index.html

+0

這不是問題的答案 – 2015-11-25 07:20:06

0

變化下面的代碼在你的firebase.json如果您的index.html是公用文件夾 在{「託管」:{「公」:「./」}}

1

火力點被默認文件夾中找public用於文件index.html

如果angular4例如index.html存在於文件夾dist你必須進入firebase.json並粘貼有:

{ 
    "hosting": { 
     "public": "dist" 
    } 
} 

這是直接的火力去尋找index.htmldist文件夾或什麼是文件夾的呼叫,而不是public。你有你的文件調用index.html核心 。之後

firebase deploy 

可能會工作