node.js - Firebase 部署 | 您需要启用 JavaScript 才能运行此应用程序。| “npm start”有效,但“firebase serve”无效
问题描述
我使用 React 和 Node Js 构建了一个应用程序,现在我想在 Firebase 上部署它。我是这些框架的新手,只是不知道出了什么问题。
在本地运行服务器时,一切正常,但是当我运行“firebase serve”时,我收到一条响应,上面写着“您需要启用 JavaScript 才能运行此应用程序”。
应用部署在这里 -> Expense Tracker
您可以在开发工具中查看 XHR 请求、事务。
提前致谢。
客户端/package.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"
}
server.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": "."
}
解决方案
我认为您正在尝试将此 express-node 实例作为 firebase 函数运行尝试做
exports.app = functions.https.onRequest(app);
在 server.js 文件的末尾
或者
创建 firebase 托管和 firebase 功能
在 firebase 托管中运行您的网站并将您的 node-express 实例作为 firebase 功能运行
推荐阅读
- c - C 上的中断处理程序在一个中断后不起作用
- python - Python Selenium - 无法单击按钮(iFrame 已解决!)
- javascript - 在 Android 中使用 Cordova 捕获实时麦克风音频
- html - 如何强制div水平而不是垂直溢出?
- apache-spark - parquet 文件大小,firehose 与 spark
- php - 尝试访问 Microsoft Graph 时“无法获取本地颁发者证书”
- javascript - 如何使用 Jest 测试 React 组件的 onClick 行?
- python - 类型错误:
() 缺少 1 个必需的位置参数:“项目” - sql - 如果 n-1、n-2.. 结果在 n 的 30 天内,则在分区中获得第 n 个结果
- excel - 尝试用 Excel 单元格内容替换书签时出现 MS Word 自动化错误