Nuxt 3环境变量读取问题解决方案

简介: 自动暴露给客户端和服务端普通的 process.env 变量只在构建时可用.env 文件未正确加载:确保你的 .env 文件在项目根目录确认文件内容格式正确(API_BASE_URL=#)运行环境问题:确保你在运行项目前已经设置了环境变量解决方案修改环境变量命名: 在 .env 文件中:```NUXT_PUBLIC_API_BASE_URL=https://www.fglt.me/

在 Nuxt 3 项目中,你遇到的 process.env.API_BASE_URL 读取不到的问题通常与环境变量的配置方式有关。以下是可能的原因和解决方案:

常见问题原因
环境变量未正确暴露给客户端:
Nuxt 3 中,只有以 NUXTPUBLIC 或 NITRO_ 为前缀的环境变量才会自动暴露给客户端和服务端
普通的 process.env 变量只在构建时可用
.env 文件未正确加载:
确保你的 .env 文件在项目根目录
确认文件内容格式正确(API_BASE_URL=#)
运行环境问题:
确保你在运行项目前已经设置了环境变量
解决方案
修改环境变量命名: 在 .env 文件中:

NUXT_PUBLIC_API_BASE_URL=https://www.fglt.me/

然后修改配置:

nitro: {
  devProxy: process.env.NODE_ENV === 'development' ? {
    '/jp': {
      target: process.env.NUXT_PUBLIC_API_BASE_URL,
      changeOrigin: true,
      secure: false,
    }
  } : undefined,
  routeRules: process.env.NODE_ENV !== 'development' ? {
    '/jp/**': {
      proxy: `${process.env.NUXT_PUBLIC_API_BASE_URL}/**`,
    }
  } : undefined
}

1.使用 runtimeConfig(推荐)

export default defineNuxtConfig({
  runtimeConfig: {
    public: {
      apiBaseUrl: process.env.API_BASE_URL || '默认值'
    }
  },
  // 其他配置...
})

然后通过 useRuntimeConfig() 访问

确保环境文件加载: 在 nuxt.config.ts 顶部添加:

import { loadEnv } from 'vite'
const env = loadEnv(process.env.NODE_ENV, process.cwd(), '')

调试建议
在 nuxt.config.ts 中添加临时调试:

console.log('API_BASE_URL:', process.env.API_BASE_URL)

检查构建后的输出,确认环境变量是否被正确替换
确保你的服务器环境(如果是部署的)也设置了相同的环境变量
完整示例配置

export default defineNuxtConfig({
  nitro: {
    devProxy: process.env.NODE_ENV === 'development' ? {
      '/jp': {
        target: process.env.NUXT_PUBLIC_API_BASE_URL,
        changeOrigin: true,
        secure: false,
      }
    } : undefined,
    routeRules: process.env.NODE_ENV !== 'development' ? {
      '/jp/**': {
        proxy: `${process.env.NUXT_PUBLIC_API_BASE_URL}/**`,
      }
    } : undefined
  },
  runtimeConfig: {
    public: {
      apiBaseUrl: process.env.NUXT_PUBLIC_API_BASE_URL
    }
  }
})

通过以上调整,你的环境变量应该能够被正确读取了。

目录
相关文章
|
26天前
|
Go
匿名函数与闭包(Anonymous Functions and Closures)-《Go语言实战指南》
本文介绍了 Go 语言中的匿名函数与闭包特性。匿名函数是没有名字的函数,可立即调用或赋值使用;闭包能捕获外部变量并持续访问,适用于状态保存、工厂函数等场景。同时,文章探讨了闭包在并发中的注意事项,并通过示例展示了其用法。这些特性为 Go 提供了函数式编程的能力,增强了代码灵活性与抽象能力。
|
26天前
|
机器学习/深度学习 敏捷开发 供应链
从多维度解构 Lead Time:定义、应用与优化策略
当我们谈论lead time时,往往会发现这个词在不同领域的定义存在细微差异。这种现象并非偶然,而是源于其本质的抽象性与适用场景的多样性。为了深入理解这一概念,我们需要从底层逻辑出发,通过跨领域的对比分析和实际案例验证,逐步揭示其核心内涵。
97 16
|
1月前
|
机器学习/深度学习 设计模式 人工智能
深度解析Agent实现,定制自己的Manus
文章结合了理论分析与实践案例,旨在帮助读者系统地认识AI Agent的核心要素、设计模式以及未来发展方向。
786 99
深度解析Agent实现,定制自己的Manus
|
26天前
|
存储 监控 安全
C语言与操作系统交互探秘
系统调用与库函数 在 C语言中,系统调用是用户程序与操作系统内核交互的桥梁。以下是常见系统调用的概述: 文件操作类:open()、read()、write()、close()、lseek() 进程控制类:fork()、exec()、wait()、exit() 信号处理类:signal()、kill() 进程间通信:pipe()、shmget()、msgget() 网络通信:socket()、bind()、listen()、accept() 系统调用 vs 库函数:
71 20
|
2月前
|
JSON JavaScript Linux
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
本文章以阿里云百炼的工作流为例,介绍如何将其封装为MCP服务并部署到平台。主要步骤包括:1)使用Node.js和TypeScript搭建MCP服务;2)将项目打包并发布至npm官方平台;3)在阿里云百炼平台创建自定义MCP服务;4)将服务添加到智能体中进行测试。通过这些步骤,您可以轻松实现工作流的MCP化,并在智能体中调用自定义服务。
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
|
28天前
|
消息中间件 运维 监控
加一个JVM参数,让系统可用率从95%提高到99.995%
本文针对一个高并发(10W+ QPS)、低延迟(毫秒级返回)的系统因内存索引切换导致的不稳定问题,深入分析并优化了JVM参数配置。通过定位问题根源为GC压力大,尝试了多种优化手段:调整MaxTenuringThreshold、InitialTenuringThreshold、AlwaysTenure等参数让索引尽早晋升到老年代;探索PretenureSizeThreshold和G1HeapRegionSize实现索引直接分配到老年代;加速索引复制过程以及升级至JDK11使用ZGC。
365 82
加一个JVM参数,让系统可用率从95%提高到99.995%
|
26天前
|
编解码 数据可视化 图计算
三维基因组:Loop结构 差异分析(2)
三维基因组:Loop结构 差异分析(2)
46 15
三维基因组:Loop结构 差异分析(2)
|
1月前
|
人工智能 定位技术 API
旅行规划太难做?5 分钟构建智能Agent,集成地图 MCP Server
MCP(Model Coordination Protocol)是由Anthropic公司提出的开源协议,旨在通过标准化交互方式解决AI大模型与外部数据源、工具的集成难题。阿里云百炼平台上线了业界首个全生命周期MCP服务,大幅降低Agent开发门槛,实现5分钟快速搭建智能体应用。本文介绍基于百炼平台“模型即选即用+MCP服务”模式,详细展示了如何通过集成高德地图MCP Server为智能体添加地图信息与天气查询能力,构建全面的旅行规划助手。方案涵盖智能体创建、模型配置、指令与技能设置等步骤,并提供清理资源的指导以避免费用产生。
602 104
|
1月前
|
数据采集 监控 Go
快来认领你的开源任务!开源之夏 - 可观测项目发布!
开源之夏是由中科院软件所发起的暑期开源活动,旨在鼓励学生参与开源软件开发,培养优秀开发者,促进开源社区发展。
232 39
|
27天前
|
存储 SQL 关系型数据库