Страница 404 не найдена при запуске развертывания Firebase - PullRequest
0 голосов
/ 25 сентября 2019

Я создал потрясающее веб-приложение, использующее реагирование и базу данных Google для auth и базы данных.На моем локальном сервере все работает хорошо.Я могу аутентифицировать определенных пользователей и перейти к следующей странице после успешного входа в систему.Проблема начинается при развертывании моего веб-приложения на хостинге Firebase.

Итак, сначала установил firebase-tools, затем запустил npm run build, после чего я инициализировал firebase (я вошел в систему).Тогда я побежал firebase deploy.После ответа на заданные вопросы мне был выдан URL на мой предположительно работающий сайт.

Теперь, когда я вхожу в систему, используя данные, которые должны успешно войти, я получаю сообщение об ошибке ниже:

404 Страница не найдена Указанный файл не найден на этом сайте.Пожалуйста, проверьте URL на наличие ошибок и попробуйте снова.Почему я это вижу?Эта страница была сгенерирована интерфейсом командной строки Firebase.Чтобы изменить его, отредактируйте файл 404.html в настроенном общедоступном каталоге вашего проекта.

Чтобы увидеть эту ошибку в режиме реального времени, вот ссылка

Частькод, который должен перейти к следующей странице после успешного входа в систему, показан ниже:

import React, { Component } from 'react';
import fire from './Firebase';
import List from './components/List';

class Login extends Component {
  constructor(props) {
    super(props);
    this.login = this.login.bind(this);
    this.handleChange = this.handleChange.bind(this);
    this.state = {
      email: '',
      password: ''
    };
  }

  handleChange(e) {
    this.setState({ [e.target.name]: e.target.value });
  }

  login(e) {
    e.preventDefault();
    fire.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then((u)=>{
        window.location = 'list'; 
    }).catch((error) => {
        console.log(error);
        alert("You don't have priviledges to log in!")
      });
  }

Вот фрагмент кода в firebase.json:

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "database": {
    "rules": "database.rules.json"
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  }
}

Ошибка отфункции:

=== Deploying to 'my-tutor-d4133'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /home/superlelo/Desktop/myTutor/mytutor/functions
> eslint .

sh: 1: eslint: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! functions@ lint: `eslint .`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the functions@ lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/superlelo/.npm/_logs/2019-09-26T21_15_49_018Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code1

Я не уверен, как это исправить, кто-то может помочь?

Спасибо.

1 Ответ

1 голос
/ 25 сентября 2019

Запись hosting->public вашего firebase.json файла правильно указывает на каталог build.Это хорошо.Это выходной каталог для Create React App .Если вы намеренно не изменили место сборки CRA, Firebase должен развертывать все, что находится в этой папке build.

Поскольку вы хотите, чтобы маршрутизация происходила на клиенте - обрабатывается React - вам нужен бэкэнд (Firebase)обслуживать ваш веб-сайт React для ВСЕХ запрошенных маршрутов.Вы делаете это, добавляя секцию rewrites в свою конфигурацию:

"hosting": {
    "public": "build",
    "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
    ],
    "rewrites": [
        {
            "source": "**",
            "destination": "/index.html"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...