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
    }
  }
})

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

目录
相关文章
|
4月前
|
机器学习/深度学习 敏捷开发 供应链
从多维度解构 Lead Time:定义、应用与优化策略
当我们谈论lead time时,往往会发现这个词在不同领域的定义存在细微差异。这种现象并非偶然,而是源于其本质的抽象性与适用场景的多样性。为了深入理解这一概念,我们需要从底层逻辑出发,通过跨领域的对比分析和实际案例验证,逐步揭示其核心内涵。
1002 16
|
4月前
|
Web App开发
|
前端开发 CDN
Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)
Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)
722 0
|
4月前
|
Go
匿名函数与闭包(Anonymous Functions and Closures)-《Go语言实战指南》
本文介绍了 Go 语言中的匿名函数与闭包特性。匿名函数是没有名字的函数,可立即调用或赋值使用;闭包能捕获外部变量并持续访问,适用于状态保存、工厂函数等场景。同时,文章探讨了闭包在并发中的注意事项,并通过示例展示了其用法。这些特性为 Go 提供了函数式编程的能力,增强了代码灵活性与抽象能力。
|
JSON JavaScript Linux
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
本文章以阿里云百炼的工作流为例,介绍如何将其封装为MCP服务并部署到平台。主要步骤包括:1)使用Node.js和TypeScript搭建MCP服务;2)将项目打包并发布至npm官方平台;3)在阿里云百炼平台创建自定义MCP服务;4)将服务添加到智能体中进行测试。通过这些步骤,您可以轻松实现工作流的MCP化,并在智能体中调用自定义服务。
3098 0
|
4月前
|
开发框架 人工智能 Java
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
本文详细介绍了阿里云应用服务器如何助力传统J2EE应用实现智能化升级。文章分为三部分:第一部分阐述了传统J2EE应用在智能化转型中的痛点,如协议鸿沟、资源冲突和观测失明;第二部分展示了阿里云应用服务器的解决方案,包括兼容传统EJB容器与微服务架构、支持大模型即插即用及全景可观测性;第三部分则通过具体步骤说明如何基于EDAS开启J2EE应用的智能化进程,确保十年代码无需重写,轻松实现智能化跃迁。
421 41
|
4月前
|
存储 监控 安全
C语言与操作系统交互探秘
系统调用与库函数 在 C语言中,系统调用是用户程序与操作系统内核交互的桥梁。以下是常见系统调用的概述: 文件操作类:open()、read()、write()、close()、lseek() 进程控制类:fork()、exec()、wait()、exit() 信号处理类:signal()、kill() 进程间通信:pipe()、shmget()、msgget() 网络通信:socket()、bind()、listen()、accept() 系统调用 vs 库函数:
158 20
|
4月前
|
数据采集 监控 Go
快来认领你的开源任务!开源之夏 - 可观测项目发布!
开源之夏是由中科院软件所发起的暑期开源活动,旨在鼓励学生参与开源软件开发,培养优秀开发者,促进开源社区发展。
321 41
|
4月前
|
存储 SQL 关系型数据库

热门文章

最新文章