Firebase Deploy | Вам нужно включить JavaScript, чтобы запустить это приложение. | «npm start» работает, но «firebase serve» не работает - PullRequest
1 голос
/ 15 марта 2020

Я создал приложение, используя React и Node Js, и теперь я хочу развернуть его через Firebase. Я новичок в этих платформах и просто не могу понять, что пошло не так.

При локальном запуске сервера все работает нормально, но когда я запускаю 'firebase serve', я получаю ответ, который говорит: «Вам нужно включить JavaScript для запуска этого приложения ".

Приложение развернуто здесь -> Отслеживание расходов

Вы можете увидеть XHR-запрос, транзакции в инструментах разработчика.

Заранее спасибо.

клиент / пакет. json:

{
  "name": "expense-tracker",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.4.1",
    "@testing-library/user-event": "^7.2.1",
    "axios": "^0.19.2",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-scripts": "3.4.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "proxy": "http://localhost:5000"
}

сервер. js:

const path = require('path');
const express = require('express');
const dotenv = require('dotenv');
const colors = require('colors');
const morgan = require('morgan');
const transactions = require('./routes/transactions');
const connectDB = require('./config/db');

dotenv.config({ path: './config/config.env' });

const app = express();

app.use(express.json());

if (process.env.NODE_ENV === 'development') {
    app.use(morgan('dev'));
}

app.use('/api/v1/transactions', transactions);

if (process.env.NODE_ENV === 'production') {
    app.use(express.static('client/build'));
    app.get('*', (req, res) => {
        res.sendfile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
}

const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`.yellow.bold));

firebase. json:

{
  "hosting": {
    "public": "client/build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  }
}

упаковка. json:

{
  "name": "expense-tracker",
  "version": "1.0.0",
  "description": "Backend for Expense Tracker",
  "main": "server.js",
  "scripts": {
    "start": "node server",
    "server": "nodemon server",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },
  "author": "Keshavram Kuduwa",
  "license": "MIT",
  "dependencies": {
    "colors": "^1.4.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "firebase-admin": "^8.10.0",
    "mongoose": "^5.9.4",
    "morgan": "^1.9.1"
  },
  "devDependencies": {
    "concurrently": "^5.1.0",
    "nodemon": "^2.0.2"
  },
  "homepage": "."
}

1 Ответ

1 голос
/ 15 марта 2020

Я думаю, что вы пытаетесь запустить этот экземпляр express-узла в качестве функции firebase, попробуйте выполнить

exports.app = functions.https.onRequest(app);

в конце вашего сервера. js file

ИЛИ

создать хостинг firebase и функцию firebase

запустить ваш сайт на хостинге firebase и запустить экземпляр узла- express как функцию firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...