【问题标题】:Unable to start the server in a digital ocean droplet无法在数字海洋水滴中启动服务器
【发布时间】:2021-03-29 05:42:33
【问题描述】:

我正在尝试将我的 MERN 应用程序部署到数字海洋水滴(Ubuntu 20.04 服务器)。

我将我的 GitHub 存储库克隆到服务器。

现在,当我尝试使用 npm start 启动服务器时,出现以下错误。 代码sn-p如下:

server/config/db.js

const mongoose = require("mongoose");
const colors = require("colors");

const connectDB = async () => {
  try {
    const conn = await mongoose.connect(process.env.MONGO_URI, {
      useNewUrlParser: true,
      useCreateIndex: true,
      useUnifiedTopology: true,
    });
    console.log(`MongoDB connected: ${conn.connection.host}`.cyan.bold);
  } catch (error) {
    console.error(`Error: ${error.message}`.red.bold.underline);
    process.exit(1);
  }
};
2;
module.exports = connectDB;

但是,在我的本地机器上一切正常。如果我console.log(process.env.MONGO_URI),我会得到字符串。

在液滴中,我尝试执行以下操作:

export MONGO_URI=the_connection_string。即使那样,我也收到了错误。

我做错了什么?

错误

【问题讨论】:

  • 克隆 repo 后是否尝试运行 npm install?
  • 是的,我在克隆 repo 后进行了 npm install 。当我尝试使用 npm start 运行服务器时出现错误。我正在从 .env 文件中加载 MONGO_URI 作为 mongoose.connect() 的第一个参数。这一切在我的本地机器上运行良好。我不知道为什么在 droplet 中出现错误。
  • 酷,mongodb 在哪里运行?你如何配置这个变量 process.env.MONGO_URI?
  • 我正在使用 MongoDB Atlas。当您说我如何配置此变量时,您是什么意思?能详细点吗?
  • 当然。根据带有错误消息的图像。 mongodb URI 未定义。根据代码,您共享通过 MONGO_URI 环境变量接收的 URI。所以我猜这个变量是未定义的。尝试运行export MONGO_URI=[url of your atlas cluster]; npm start

标签: deployment web-deployment digital-ocean


【解决方案1】:

我发现了问题。我把.env 放在.gitignore 里面。因此,.env 在我克隆到我的 Digital Ocean 液滴的 github 存储库中不可用。作为一种解决方案,我使用vim 在我的Droplet 中重新创建了.env 文件。然后我可以毫无问题地启动服务器。

【讨论】:

    猜你喜欢
    • 2017-09-11
    • 2019-06-14
    • 2019-10-04
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多