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

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

目录
相关文章
|
8月前
|
机器学习/深度学习 敏捷开发 供应链
从多维度解构 Lead Time:定义、应用与优化策略
当我们谈论lead time时,往往会发现这个词在不同领域的定义存在细微差异。这种现象并非偶然,而是源于其本质的抽象性与适用场景的多样性。为了深入理解这一概念,我们需要从底层逻辑出发,通过跨领域的对比分析和实际案例验证,逐步揭示其核心内涵。
1825 16
|
前端开发 CDN
Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)
Nuxt.js 分页获取数据(及更新子组件数据、不刷新页面,异步请求追加数据)
808 0
|
8月前
|
Web App开发
|
8月前
|
存储 监控 安全
C语言与操作系统交互探秘
系统调用与库函数 在 C语言中,系统调用是用户程序与操作系统内核交互的桥梁。以下是常见系统调用的概述: 文件操作类:open()、read()、write()、close()、lseek() 进程控制类:fork()、exec()、wait()、exit() 信号处理类:signal()、kill() 进程间通信:pipe()、shmget()、msgget() 网络通信:socket()、bind()、listen()、accept() 系统调用 vs 库函数:
295 20
|
前端开发 JavaScript
富文本编辑器wangEdiotr,编辑内容后,重新打开报错Uncaught (in promise) Error: Cannot find a descendant at path
富文本编辑器wangEdiotr,编辑内容后,重新打开报错Uncaught (in promise) Error: Cannot find a descendant at path
2567 1
|
8月前
|
Go
匿名函数与闭包(Anonymous Functions and Closures)-《Go语言实战指南》
本文介绍了 Go 语言中的匿名函数与闭包特性。匿名函数是没有名字的函数,可立即调用或赋值使用;闭包能捕获外部变量并持续访问,适用于状态保存、工厂函数等场景。同时,文章探讨了闭包在并发中的注意事项,并通过示例展示了其用法。这些特性为 Go 提供了函数式编程的能力,增强了代码灵活性与抽象能力。
175 18
|
8月前
|
存储 缓存 监控
Redis设计与实现——Redis命令参考与高级特性
Redis 是一个高性能的键值存储系统,支持丰富的数据类型(字符串、列表、哈希、集合等)和多种高级功能。本文档涵盖 Redis 的核心命令分类,包括数据类型操作、事务与脚本、持久化、集群管理、系统监控等。特别介绍了事务的原子性特性、Lua 脚本的执行方式及优势、排序机制、发布订阅模型以及慢查询日志和监视器工具的使用方法。适用于开发者快速掌握 Redis 常用命令及其应用场景,优化系统性能与可靠性。
|
JSON JavaScript Linux
【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上
本文章以阿里云百炼的工作流为例,介绍如何将其封装为MCP服务并部署到平台。主要步骤包括:1)使用Node.js和TypeScript搭建MCP服务;2)将项目打包并发布至npm官方平台;3)在阿里云百炼平台创建自定义MCP服务;4)将服务添加到智能体中进行测试。通过这些步骤,您可以轻松实现工作流的MCP化,并在智能体中调用自定义服务。
4132 107
|
8月前
|
XML 安全 前端开发
一行代码搞定禁用 web 开发者工具
在如今的互联网时代,网页源码的保护显得尤为重要,特别是前端代码,几乎就是明文展示,很容易造成源码泄露,黑客和恶意用户往往会利用浏览器的开发者工具来窃取网站的敏感信息。为了有效防止用户打开浏览器的 Web 开发者工具面板,今天推荐一个不错的 npm 库,可以帮助开发者更好地保护自己的网站源码,本文将介绍该库的功能和使用方法。 功能介绍 npm 库名称:disable-devtool,github 路径:/theajack/disable-devtool。从 f12 按钮,右键单击和浏览器菜单都可以禁用 Web 开发工具。 🚀 一行代码搞定禁用 web 开发者工具 该库有以下特性: • 支持可配
658 22
|
8月前
|
编解码 数据可视化 图计算
三维基因组:Loop结构 差异分析(2)
三维基因组:Loop结构 差异分析(2)
200 15
三维基因组:Loop结构 差异分析(2)

热门文章

最新文章