node.js - 连接到数据库时出现 DotEnv 错误
问题描述
问题很简单,但我不知道我的想法是否错误,我会尝试解释它,如果有人知道如何解决它会很酷,我会非常感谢你。
请记住,这个应用程序是用 NextJS 制作的
DotEnv 变量位于我的 NextJs 应用程序根文件夹中的 .env 文件中。
我有这个数据库连接,我正在使用 DotEnv 变量:
** 更新 **
我没有根据 NextJs 文档对更多数据进行解构,现在我的 .env 是 .env.local 并且仍然无法正常工作,如果有人知道它为什么不工作,您可以自由发表评论。
const db = mysql({
config: {
host: process.env.MYSQL_HOST ,
port: process.env.MYSQL_PORT ,
database: process.env.MYSQL_DATABASE ,
user: process.env.MYSQL_USER ,
password: process.env.MYSQL_PASSWORD
}
});
通过这种方式它应该连接但它给了我对数据库的访问错误,但是当我在没有 DotEnv 的情况下放置这样的数据时。
const db = mysql({
config: {
host: "127.0.0.1" ,
port: 3306 ,
database: "mydatabase" ,
user: "myuser" ,
password: "123"
}
});
连接工作正常。可能是我声明我的 .env 文件或其他东西的方式,如果你知道我做错了什么,我会很高兴知道。感谢阅读。
解决方案
我落入了同样的陷阱;Next 处理存储在文件中的环境变量.env.local
,而不是.env
; 因此,要检索它们,您只需重命名文件
文档:https ://nextjs.org/docs/basic-features/environment-variables
编辑
找到了问题 - 从文档中:
注意:为了保证仅服务器机密的安全,Next.js 在构建时将 process.env.* 替换为正确的值。这意味着 process.env 不是标准的 JavaScript 对象,因此您不能使用对象解构。环境变量必须引用为例如 process.env.NEXT_PUBLIC_PUBLISHABLE_KEY,而不是 const { NEXT_PUBLIC_PUBLISHABLE_KEY } = process.env。
因此,除了将文件重命名为 之外.env.local
,请确保也调用变量process.env.VAR_NAME
而不是解构
推荐阅读
- javascript - 从登录中获取身份验证并在 javascript 页面中使用它
- sql - postgresql: INSERT INTO table_A (col_b) SELECT col_d from table_B WHERE table_B.col_c = table_A.col_a
- android - 改造 2 不适用于应用程序的发布版本
- sql - SQL - 如何按行号仅选择直到某一行的那些行
- python - Python:如何在用作参数本身的函数中使用参数?
- facebook - 每当我尝试将有效负载附加到 Facebook 应用程序时,它都会显示此错误。我在虚拟机上使用 Linux Debian
- c# - 在 C# 中创建 XML 文档 - 将 XML 字符串附加为“Xmlelement”
- spring-boot - 无法在 PCF 中使用 Rest 服务上传 100 MB 文件
- python - 在 Scikit-Learn 的决策树分类器中,如何确定特征的最优阈值?
- java - 如何在java中反转枚举元素的内容