我正在做一个使用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