【问题标题】:Confusion about how to set .env variable in node.js/express关于如何在 node.js/express 中设置 .env 变量的困惑
【发布时间】:2020-05-21 20:00:32
【问题描述】:

所以我一直在尝试连接到我的 MongoDB 数据库,我不得不创建一个 process.env.MONGO_URI 变量来存储连接 URI,我感到非常沮丧,因为当我看起来好像它不起作用时根据我的学习模块的说明正确地做,代码如下:

const mongoose = require('mongoose');
var MONGO_URI='mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority'
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }); 

尽管“解决方案”说了什么,但上述方法不起作用,但是当我将代码更改为此它起作用时,

const mongoose = require('mongoose');
var MONGO_URI='mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority'
process.env.MONGO_URI='mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority'
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });

我的主要问题是关于设置 process.env.VARIABLE,为什么我必须在单独的行上设置大写部分,然后在单独的行上再次重置完整的 process.env.VARIABLE?我的学习资料基本上是说你设置好了,然后你就可以把它“夹”到 process.env 上,这似乎完全错误,或者有多种设置 process.env 的方法。变量,谁能给我一个更好的解释,谢谢stackoverflow的天才

【问题讨论】:

  • 你可以这样做 :: const mongoose = require('mongoose'); process.env.MONGO_URI='mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority' mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }); (不需要第二行)虽然在现实世界的应用程序中你不会像你在这里做的那样存储数据库连接字符串..
  • 你安装了.env吗?使用环境变量是您的要求吗?不需要连接到 Mongoose。您应该能够将mongoose.connect(process.env.MONGO_URI, ... 更改为mongoose.connect(MONGO_URI, ... 并删除process.env.MONGO_URI=...,它应该可以连接。

标签: node.js mongodb express mongoose environment-variables


【解决方案1】:

看看dotenv模块。

您需要在项目根目录中创建一个 .env 文件。

【讨论】:

    【解决方案2】:

    在第一个示例中,您定义var MONGO_URI,然后使用process.env.MONGO_URI;这是不正确的,因为您必须直接在 connect 方法中使用已定义的变量 MONGO_URI 或使用项目根目录中 .env 文件中的变量。您可以使用以下场景之一:

    1) 局部变量案例: 像之前一样添加一个 var 或 const,然后附加到 mongoose 的 connect 方法:

    const mongoose = require('mongoose');
    var MONGO_URI='mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority'
    mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
    

    2) 使用.env 文件案例: 将连接字符串作为变量添加到项目根目录下的.env 文件中:

    创建一个.env 文件,它应该包含以下内容:

    MONGO_URI = 'mongodb+srv://myUsername:myPassword@cluster0-7impo.mongodb.net/test?retryWrites=true&w=majority'
    

    然后您可以在 connect 方法中包含此变量,但首先您必须通过以下命令之一安装 dotenv npm 包:

    使用 npm: npm install dotenv

    使用 Yarn: 纱线添加 dotenv

    然后在你的主项目文件中包含 dotenv 包:require('dotenv').config();

    最后一步是将 .env 文件中的变量添加到您的连接方法中,最终结果应如下所示:

    require('dotenv').config();
    const mongoose = require('mongoose');
    mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 2014-03-21
      • 2011-07-20
      • 2019-09-13
      • 2012-04-09
      • 1970-01-01
      • 2021-11-26
      • 2014-10-15
      相关资源
      最近更新 更多