我正在做一个使用Next.js13和API路径与数据库交互的项目.我正try 将我的数据库凭据存储在一个.env文件中,但没有加载变量.

我已经验证了.env文件正在被加载,但是当我记录Process.env时,输出不包括我定义的变量.

我是不是遗漏了什么或者做错了什么?如何访问我的Next.js API路由中的环境变量?任何帮助都将不胜感激.

我try 使用以下代码访问API路由index.js中的变量:

export default function handler(req, res) {
  console.log(process.env.DB_NAME);
  console.log(process.env.NEXT_PUBLIC_API_URL);
  console.log(process.env);
  res.status(200).send("OK");
}

此外,我还try 在next.config.js中使用serverRounmeConfig,如下所示:

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: true,
  webpack: (config) => {
    config.experiments = { ...config.experiments, topLevelAwait: true };
    return config;
  },
  serverRuntimeConfig: {
    DB_HOST: process.env.DB_HOST,
  },
};

module.exports = nextConfig;

在我的API路由index.js中:

import getConfig from "next/config";
const { serverRuntimeConfig } = getConfig();
export default function handler(req, res) {
  console.log(serverRuntimeConfig.DB_HOST);
  res.status(200).send("OK");
}

但是,变量的输出始终是未定义的.

我还try 在寻呼路由中使用getServerSideProps,但得到了相同的结果.

我已经验证了.env文件位于我的项目的根目录中.在进行更改后,我还重新启动了开发服务器.

预期的输出将是‘localhost’

我的.env.local文件:

DB_NAME: name
DB_USER: postgres
DB_PASSWORD: *****
DB_HOST: localhost
BD_DIALECT: postgres

推荐答案

变量在您的.env.local文件中没有正确定义.

确保变量定义为=号,两侧不能有空格:

.env.local

DB_NAME=name
DB_USER=postgres
DB_PASSWORD=*****
DB_HOST=localhost
BD_DIALECT=postgres

另请注意,.env.local仅在运行npm run dev时使用,它不会用于npm run buildnpm run start,除非NODE_ENV变量显式设置为development.

因此,我再次建议将您的.env.local文件更改为.env,以消除NODE_ENV影响环境变量初始化的可能性.

Javascript相关问答推荐

序列查找器功能应用默认值而不是读取响应

vanillajs-datepicker未设置输入值,日期单击时未触发更改事件

提交表格后保留Web表格中的收件箱值?

在JavaScript中声明自定义内置元素不起作用

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

使用useEffect,axios和useParams进行react测试

我们如何从一个行动中分派行动

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

如何将Openjphjs与next.js一起使用?

如何使onPaste事件与可拖动的HTML元素一起工作?

Eval vs函数()返回语义

在css中放置所需 colored颜色 以填充图像的透明区域

如何确保预订系统跨不同时区的日期时间处理一致?

每次重新呈现时调用useState initialValue函数

删除元素属性或样式属性的首选方法

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

谷歌饼图3D切片

AstroJS混合模式服务器终结点返回404

在每次重新加载页面时更改指针光标

使用Java脚本在div中创建新的span标记