Angular 6.0 firebase 托管部署不工作

Angular 6.0 firebase hosting deploy not working

我正在寻找有关如何在我的 angular 6.0 项目上正确设置 firebase-tools 托管的教程,我发现的总是这样。

- firebase init 
- then select the Hosting
- What do you want to use as your public directory? dist
- Configure as a single-page app (rewrite all urls to /index.html)? Yes
- Overwrite? No
- ng build --prod
- firebase deploy

但在这样做之后,这就是我所拥有的。

我发现 ng build --prod 将创建一个 dist 和项目位置所在的另一个子文件夹。

dist
|--TheProject_Folder
|  |--assets|index.html - This index html is not using.
|--index.html - This is the html generated in the firebase init

所以我所做的是再次初始化 firebase init 并将 public 目录 dist 更改为 dist/TheProject_Folder:

- What do you want to use as your public directory? dist/TheProject_Folder
- Configure as a single-page app (rewrite all urls to /index.html)? Yes
- Overwrite? No

第二种可能的方法是将 angular.json 中的 outputPath 更改为 dist,因此该行将如下所示 "outputhPath": "dist"

以下是在 firebase 上托管 angular6.0 应用程序的分步过程

1] npm install -g firebase-tool 安装 firebase 工具

2] firebase login 使用 CLI 工具登录 Firebase。

连接到我们的 account/Gmail-account 后,我们将在浏览器中收到 firebase CLI 登录成功 消息

3]firebase init

以下是 Firebase 工具将提出的问题的答案:

? Are you ready to proceed? Yes
? Which Firebase CLI features do you want to setup for this folder? Press Space to select features, then Enter to confirm your choices. Hosting: Configure and deploy Firebase Hosting sites

? What do you want to use as your public directory? dist (This is important! Angular creates the dist folder.)

? Configure as a single-page app (rewrite all urls to /index. html)? Yes

4]ng build --prod

This will create a brand new dist/ folder in our project with the files necessary to launch our app.

5] 在部署应用程序之前,转到 firebase.json 文件并指定您的项目 public 字段,如下所示

"public": "dist/your_project_name",

6] 现在使用以下命令在 firebase 中部署项目

firebase deploy

去多边形后你会得到下面的信息

  • Deploy complete!

Project Console: https://************ [you will get the actual url name rather than stars]

Hosting URL: https://************* [you will get the actual url name rather than stars]

you can access the website by the URL given in Hosting URL

在我删除缓存并刷新浏览器后它对我有用,谢谢。

@bajran 可能已经详细阐述了所有步骤,但如果您要从 angular 5 迁移到 6,唯一重要的步骤是, 在 firebase.json

中将 "public": "dist", 更改为 "public": "dist/your_project_name",

还有一个问题可能导致同一页面。 当我们使用

初始化项目时

firebase init

命令并遵循该过程,默认情况下它会覆盖 index.html 文件。 因此,如果已经构建(以获得 dist/_Project_Folder),index.html 文件将被覆盖。 在

之后再次构建它
firebase init 
ng build --prod

问题是关于

File dist/apps/ditectrev/index.html already exists. Overwrite?

如果您输入 Y 表示是 ,那么它将创建自己的 index.html 文件,由 Firebase 生成。为 No 提供此 N 我能够保留我原来的 index.html,它是在 ng build --prod 中使用 ng build --prod 后生成的=11=]。注意:我使用的是 Nx 工作区,但同样适用于其他 Angular 项目。在正常的 Angular 项目案例中,它将是不同的路径,这将只是 dist.

如果你没有单页应用(像我一样),当 Firebase 询问时

File dist/apps/ditectrev/index.html already exists. Overwrite?

写N,试了很多次才弄明白

当我在网络上使用 ctrl+shift+R 硬重置清除缓存时它起作用了!确保在 firebase 上部署了正确的 index.html 文件。

您可以检查是否创建了 firebase.json 和 .firebaserc 文件。如果没有,此解决方案适合您。

第 1 步:部署 firebase 后它不起作用,您可以创建 firebase.json 文件并粘贴此代码:

{ "database": {
"rules": "firebase_rules.json"},
"hosting": {
"public": "dist/"yourdistfilename",
"ignore": [
  "firebase.json",
  "**/.*",
  "**/node_modules/**"
  ]  
 }
}

步骤 2:创建 firebase_rules.json 并粘贴此代码:

{  "rules": {
    ".read": false,
    ".write": false
 }
}

请注意,您将文件命名为 firebase.json 和 firebase_rules.json

步骤 3:在终端 运行 这个 firebase 初始化数据库。此问题将出现并跟随答案。

  1. 实时数据库安全规则应该使用什么文件? firebase_rules.json
  2. 文件 firebase_rules.json 已经存在。你想用实时数据库安全规则覆盖它吗(y/N)y(覆盖并更新到最新代码)

第 4 步:然后您注意到已经创建了 .firebaserc。

步骤 5:您需要 运行 firebase init 和 firebase 再部署一次。现在您终于可以看到您的项目了!

内容不多,希望对您有所帮助。