node.js - 关于如何在 node.js/express 中设置 .env 变量的困惑
问题描述
所以我一直在尝试连接到我的 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的天才
解决方案
在第一个示例中,您定义了var MONGO_URI
然后使用process.env.MONGO_URI
; 这是不正确的,因为您必须使用已MONGO_URI
在方法内直接定义connect
的变量,或者使用项目根目录中 .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
使用纱线:纱线添加 dotenv
然后在主项目文件中包含 dotenv 包:require('dotenv').config();
最后一步是将 .env 文件中的变量添加到您的 connect 方法中,最终结果应如下所示:
require('dotenv').config();
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
推荐阅读
- excel - Excel VBA“Selection.Left”
- java - 无法为 Java 运行 vscode 调试器
- reactjs - 请确保您尝试使用的元素仍然已安装
- php - 在 symfony 2.8 中,这两个命令都不能在 app/console 上运行
- javascript - xhttp.onreadystatechange setInterval 函数中未捕获的 TypeError innerHTML of null
- asp.net-core - 在 asp.net core blazor 应用程序中使用 JWT 身份验证 API
- node.js - 如何修复 yarn.lock 和 package-lock json mix
- reactjs - Okta 重定向因 React HashRouter 而失败
- java - tikxml 没有类型适配器
- triggers - 忽略或关闭zabbix问题一段时间