将 MERN 应用程序部署到 Heroku 后缺少 React 组件
React components missing after deploying MERN app to Heroku
我向 Heroku 部署了一个 MERN 应用程序(使用 MongoDB Atlas 作为数据库),但主页未呈现登录或注册表单。我检查了 Heroku 日志是否有任何错误,没有错误。此外,当我检查元素时,我看到元素在那里,但 React 组件没有呈现。只有 CSS 背景图像正在渲染。我的 heroku-postbuild 脚本有问题吗?谢谢enter image description here
Heroku 应用托管在“https://glacial-gorge-15530.herokuapp.com/login”。下面是我的 server.js 和 package.json 文件。我还添加了登录页面的开发与生产屏幕截图图像。
server.js
const express = require('express');
const connectDB = require('./config/db');
const path = require('path');
const app = express();
//Connect Database
connectDB();
//Init middleware
app.use(express.json({ extended: false }));
//Define routes
app.use('/api/users', require('./routes/users'));
app.use('/api/auth', require('./routes/auth'));
app.use('/api/recipes', require('./routes/recipes'));
//Serve static assets in production
if(process.env.NODE_ENV === 'production') {
//Set static folder
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 started on port ${PORT}`));
package.json
{
"name": "favorite-recipes-2",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "node server.js",
"server": "nodemon server.js",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"client": "0.0.1",
"config": "^3.3.1",
"create-react-app": "^3.4.1",
"express": "^4.17.1",
"express-validator": "^6.6.0",
"jsonwebtoken": "^8.5.1",
"materialize-css": "^1.0.0-rc.2",
"mongoose": "^5.9.20",
"react-transition-group": "^4.4.1"
},
"devDependencies": {
"concurrently": "^5.2.0",
"nodemon": "^2.0.4"
}
}
Screenshots of login page in production environment
Screenshots of login page in development environment
您的 .form-container
元素的不透明度为 1%
,这就是元素不可见的原因。
.form-container {
background-color: #e7e3e3;
opacity: 1%;
}
移除opacity: 1%
.
我向 Heroku 部署了一个 MERN 应用程序(使用 MongoDB Atlas 作为数据库),但主页未呈现登录或注册表单。我检查了 Heroku 日志是否有任何错误,没有错误。此外,当我检查元素时,我看到元素在那里,但 React 组件没有呈现。只有 CSS 背景图像正在渲染。我的 heroku-postbuild 脚本有问题吗?谢谢enter image description here
Heroku 应用托管在“https://glacial-gorge-15530.herokuapp.com/login”。下面是我的 server.js 和 package.json 文件。我还添加了登录页面的开发与生产屏幕截图图像。
server.js
const express = require('express');
const connectDB = require('./config/db');
const path = require('path');
const app = express();
//Connect Database
connectDB();
//Init middleware
app.use(express.json({ extended: false }));
//Define routes
app.use('/api/users', require('./routes/users'));
app.use('/api/auth', require('./routes/auth'));
app.use('/api/recipes', require('./routes/recipes'));
//Serve static assets in production
if(process.env.NODE_ENV === 'production') {
//Set static folder
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 started on port ${PORT}`));
package.json
{
"name": "favorite-recipes-2",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"start": "node server.js",
"server": "nodemon server.js",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"client": "0.0.1",
"config": "^3.3.1",
"create-react-app": "^3.4.1",
"express": "^4.17.1",
"express-validator": "^6.6.0",
"jsonwebtoken": "^8.5.1",
"materialize-css": "^1.0.0-rc.2",
"mongoose": "^5.9.20",
"react-transition-group": "^4.4.1"
},
"devDependencies": {
"concurrently": "^5.2.0",
"nodemon": "^2.0.4"
}
}
Screenshots of login page in production environment Screenshots of login page in development environment
您的 .form-container
元素的不透明度为 1%
,这就是元素不可见的原因。
.form-container {
background-color: #e7e3e3;
opacity: 1%;
}
移除opacity: 1%
.