You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js自定义HTTPS服务器无法读取.env.local环境变量求助

Next.js 自定义HTTPS服务器读取.env.local环境变量问题解决方法

问题核心

直接用node server.js启动自定义服务器时,Next.js的环境变量加载逻辑是在app.prepare()执行后才完成的,所以初始化next实例时,process.env中的变量还未被注入,导致读取结果为undefined。

解决方案

方法一:手动加载dotenv(最直接有效)

Next.js依赖dotenv处理环境变量,但直接用node启动时不会自动加载,需要手动引入:

  1. 安装dotenv依赖
npm install dotenv --save-dev
  1. 在server.js最顶部添加加载代码
require('dotenv').config({ path: '.env.local' });
  1. 修改server.js中的变量读取逻辑(服务端变量无需加NEXT_PUBLIC前缀)
const port = process.env.PORT || 12345; // 增加默认值避免配置缺失报错
const domain = process.env.DOMAIN || "localhost";
const dev = process.env.NODE_ENV !== 'production'; // 从环境变量判断开发/生产模式

修改后的完整server.js示例:

require('dotenv').config({ path: '.env.local' });
const { createServer } = require("https");
const { parse } = require("url");
const next = require("next");
const fs = require("fs");

const port = process.env.PORT || 12345;
const domain = process.env.DOMAIN || "localhost";
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev, domain, port });
const handle = app.getRequestHandler();

const httpsOptions = {
    key: fs.readFileSync("./certificate/test.key"),
    cert: fs.readFileSync("./certificate/test.crt"),
};

app.prepare().then(() => {
    createServer(httpsOptions, async (req, res) => {
        const parsedUrl = parse(req.url, true);
        handle(req, res, parsedUrl);
    }).listen(port, (err) => {
        if (err) throw err;
        console.log(`> HTTPS: Ready on https://${domain}:${port}`);
    });
});

方法二:通过启动脚本注入环境变量

修改package.json的dev脚本,用dotenv/config预加载环境变量:

{
  "scripts": {
    "dev": "NODE_ENV=development node -r dotenv/config server.js",
    "build": "next build",
    "start": "next start -p 15100",
    "lint": "next lint"
  }
}

注:Windows系统需将脚本改为"dev": "set NODE_ENV=development && node -r dotenv/config server.js"

注意事项

  • .env.local需放在项目根目录,确保dotenv能正确读取
  • 服务端代码中的环境变量无需添加NEXT_PUBLIC前缀,该前缀仅用于需要暴露给客户端浏览器的变量
  • 给环境变量设置默认值,避免因配置文件缺失导致启动失败

内容的提问来源于stack exchange,提问作者nougat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:27:36