【问题标题】:My MERN app is deployed on Namecheap / cPanel but it's not accessing Mongo Atlas DB我的 MERN 应用程序部署在 Namecheap / cPanel 上,但它没有访问 Mongo Atlas DB
【发布时间】:2021-01-15 20:29:08
【问题描述】:

问题

我的应用托管在 Namecheap 共享主机上,但它没有连接到我的 Mongo Atlas DB。

详情

我对此很陌生,并且只部署到 Heroku。我一开始尝试使用它们,但我不知道如何让图像文件上传/检索与 S3 一起使用。

所以我正在尝试 Namecheap。

反正在 cPanel 文件目录下,我的应用在:/home/username/repositories/myapp

我也在本地运行npm run build命令,并将新创建的/build/目录的内容放在cPanel的/home/username/public_html

我几乎可以肯定不必那样做,但到目前为止,这是让我的实际网站在浏览器上呈现的唯一方法。

我使用 cPanel 的“Setup NodeJS App”菜单来安装我的应用程序,并将“Application Starter File”设置为server.js

我的 server.js 文件

const mongoose = require('mongoose');
const express = require('express');
const app = express();
const dotenv = require('dotenv');
const cors = require('cors');
const path = require('path');

// Activate dotenv for secure keys
dotenv.config();


// Middleware to recognize incoming Request Object as a JSON object
app.use(express.json());


// Local file storage
app.use('/uploads', express.static('uploads'));


// Bind Routes
const commissions = require('./routes/api/commissions');
const projects = require('./routes/api/projects');
const users = require('./routes/api/users');
// Use Routes
app.use(cors());
app.use('/commissions', commissions);
app.use('/projects', projects);
app.use('/users', users);


// Mongo connect
mongoose
  .connect(process.env.URI || process.env.MONGO_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true
  })
  .then(() => console.log("Connected to MongoDB"))
  .catch(err => console.log(err));


// For Deployment
if(process.env.NODE_ENV === 'production') {
  app.use(express.static(path.join(__dirname, 'client', 'build')));

  app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'client', 'build', 'index.html'));
  });
};


// Run server
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));

我在 cPanel 中运行 NPM 安装(以及我的 package.json 中的一个脚本以在客户端运行 npm install),希望这两者都能使我的应用程序能够工作(就像在开发中一样)。

我还检查了我的 Mongo Atlas IP 白名单,但它已经允许 0.0.0.0/0(来自我的 heroku 部署)。

另外,namecheap 的支持人员为我打开了 5000 端口(我在另一个论坛上读到,这是针对有类似问题的人的解决方案),但这对我也不起作用。

【问题讨论】:

    标签: reactjs deployment cpanel mern namecheap


    【解决方案1】:

    解决者:

    • 将我的共享主机 IP 地址(位于 cPanel 中)添加到 Mongo Atlas IP 白名单

    • 联系 cPanel 支持并让他们打开适当的后端端口

    • 在 cPanel 的“设置 NodeJS 应用”菜单上更改我的应用的 NodeJS 版本

    最重要的是 Node 版本。 Node 有很多版本,但在这篇文章中 cPanel 只有以下 Node Version 选项:

    12.19.1
    11.15.0
    10.22.0
    9.11.2
    8.17.0
    6.17.1
    

    我的特定版本不是这些,所以我被告知只选择可用的最高版本。但这就是中断与我的 Mongo Atlas DB 连接的原因。

    我测试了每个选项,其中一个有效的是8.17.0

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 2020-10-05
      • 2021-04-18
      • 2021-03-14
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多