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

SvelteKit Node生产环境自定义端口配置出错,如何在构建时嵌入端口

SvelteKit Node适配器自定义端口配置错误排查与解决方法

你的操作错误点

  • .env文件格式错误:你把启动命令和环境变量混写在一起了,.env文件只能单独定义键值对,不能添加node build这类执行命令,正确格式应为每行一个环境变量。
  • 混淆构建与运行阶段的环境变量用途:node -r dotenv/config build是让Node加载环境变量后执行构建脚本,但SvelteKit的构建过程不需要端口、主机这类运行时变量,这些变量是给运行构建完成的产物使用的,不是构建阶段用的。

正确的配置流程

不需要手动修改构建后的index.js,有两种标准方式实现自定义端口:

方式1:运行时通过环境变量指定(推荐,灵活可控)

  1. 在项目根目录创建.env文件,内容为:
    HOST=127.0.0.1
    PORT=3003
    
  2. 执行常规构建命令:
    npm run build
    
  3. 运行构建产物时加载环境变量:
    node -r dotenv/config build/index.js
    
    如果用pm2启动,直接在配置里注入环境变量即可:
    创建ecosystem.config.js配置文件:
    module.exports = {
      apps: [{
        name: 'sveltekit-app',
        script: './build/index.js',
        env: {
          HOST: '127.0.0.1',
          PORT: '3003'
        }
      }]
    }
    
    然后启动:
    pm2 start ecosystem.config.js
    

方式2:构建时嵌入默认端口(适合固定端口场景)

如果希望构建后的产物默认使用3003端口,无需每次运行都传变量,可以修改svelte.config.js的适配器配置:

import adapter from '@sveltejs/adapter-node';

/** @type {import('@sveltejs/kit').Config} */
const config = {
  kit: {
    adapter: adapter({
      env: {
        host: '127.0.0.1',
        port: '3003'
      }
    })
  }
};

export default config;

执行npm run build后,构建产物的index.js里默认端口就会变成3003,运行时如果有外部环境变量PORT,依然会优先使用外部变量的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:15:23