【问题标题】:Angular - Deploying a JSON file to firebaseAngular - 将 JSON 文件部署到 firebase
【发布时间】:2017-11-22 03:30:06
【问题描述】:

总结

  • 我有一个带有模拟数据的 JSON 文件的 Angular 项目
  • 在构建项目时,我将 JSON 文件粘贴到“dist”文件夹中
  • 我有一个引用 JSON 文件的角度服务
  • 我部署到 Firebase 并收到错误消息
  • 请原谅这里缺乏知识,对此非常陌生

问题

  1. 在 LocalHost 中工作时是否可以使用 JSON 文件?
  2. 我在部署到 Firebase 时做错了什么?

服务

import { IProjects } from './projects.interface';

@Injectable()
export class ProjectsService {
    private _projectURL = '/dist/projects-list.json';

    constructor(private _http: Http) { }

    getProjects(): Observable<IProjects[]> {
        return this._http.get(this._projectURL)
            .map((response: Response) => <IProjects[]> response.json())
            .do(data => console.log('All: ' +  JSON.stringify(data)))
            .catch(this.handleError);
    }

    getProject(id: number): Observable<IProjects> {
        return this.getProjects()
            .map((projects: IProjects[]) => projects.find(p => p.projectId === id));
    }

    private handleError(error: Response) {
        console.error(error);
        return Observable.throw(error.json().error || 'Server error');
    }
}

显示项目列表的列表组件

export class ProjectsListComponent implements OnInit {
    pageTitle = "Project List";
    errorMessage: string;
    projects: IProjects[];

    constructor(private _projectsService: ProjectsService) {

    }


    ngOnInit(): void {
        this._projectsService.getProjects()
            .subscribe(projects => this.projects = projects,
            error => this.errorMessage = <any>error);
    }

    onRatingClicked(message: string): void {
        this.pageTitle = 'Project List: ' + message;
    }
}

浏览器收到错误

任何帮助将不胜感激:)

【问题讨论】:

    标签: json angular firebase firebase-realtime-database


    【解决方案1】:

    您需要在 Angular 项目的 assets 文件夹中添加模拟 json 文件。

    你可以这样访问

    getProjects(): Observable<IProjects[]> {
            return this._http.get("assets/projects-list.json")
                .map((response: Response) => <IProjects[]> response.json())
                .do(data => console.log('All: ' +  JSON.stringify(data)))
                .catch(this.handleError);
        }
    

    注意:- 您需要在 assets 文件夹中添加静态文件,如图像或配置文件。 angular 只能访问 assets 文件夹。

    【讨论】:

    • 谢谢@jonnysai! - 我试过了,运气不好。但是,当我运行“ng build --watch”时,json 文件现在出现在 assets 文件夹中。当我部署到 Firebase 和本地(本地主机)时,我遇到了同样的错误,它似乎找不到该文件。 ("加载资源失败:服务器响应状态为 404 (Not Found)"
    • 我不知道firebase,但它应该在本地工作。尝试服务
    • 啊,我已经让它在本地和 firebase 上工作。 url 需要是“assets/projects-list.json”。如果您更新您的答案,我会将其标记为“已回答”,因为您在那里教了我一些新东西。感谢您抽出宝贵时间 Jonny,非常感谢。
    • this._http.get("./projects-list.json") 不工作?你试过了吗?
    • 是的,直到我在前面添加了“assets/”,它才起作用。
    猜你喜欢
    • 2019-11-01
    • 2017-09-06
    • 2018-11-05
    • 1970-01-01
    • 2021-03-03
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多