Nuxt.js 环境变量配置与使用
title: Nuxt.js 环境变量配置与使用
date: 2024/7/25
updated: 2024/7/25
author: cmdragon
excerpt:
摘要:“该文探讨了Nuxt.js框架下环境变量配置的详细过程,涉及.env文件配置、运行时访问、安全性考量、在不同场景下的实践(如Vue应用、插件、服务器路由)及多环境配置下的最佳实践。”
categories:
- 前端开发
tags:
- Nuxt.js
- 环境变量
- 配置管理
- 运行时配置
- 安全性
- TypeScript
- 多环境部署


扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长
环境变量是配置应用程序的一种常见方式,特别是在不同的环境(如开发、测试、生产)中管理不同的配置值时。在 Nuxt.js
中,环境变量可以通过.env文件来设置,并在应用程序中读取。以下是对您提供信息的总结和解释:
环境变量配置
.env文件:- Nuxt CLI 支持在开发、构建和生成过程中读取
.env文件。 - 当运行构建后的服务器时,不会读取
.env文件。
- Nuxt CLI 支持在开发、构建和生成过程中读取
环境变量要求:
- 变量必须在
nuxt.config中定义,以避免环境变量直接暴露给应用程序代码。 - 只有以
NUXT_开头的大写环境变量,并且使用_分隔键和大小写变化的环境变量可以覆盖运行时配置属性。
- 变量必须在
示例:
.env文件内容:NUXT_API_SECRET=api_secret_token
NUXT_PUBLIC_API_BASE=https://nuxtjs.orgnuxt.config.ts配置:export default defineNuxtConfig({
runtimeConfig: {
apiSecret: '', // 可以由 NUXT_API_SECRET 环境变量覆盖
public: {
apiBase: '', // 可以由 NUXT_PUBLIC_API_BASE 环境变量覆盖
}
},
});
读取运行时配置
在 Vue 应用中:
- 使用
useRuntimeConfig()方法来访问运行时配置。 - 在客户端,只有
runtimeConfig.public中的键可用,并且是可写和响应式的。 - 在服务器端,整个运行时配置都可用,但它是只读的。
- 使用
示例:
pages/index.vue页面:<script setup>
const config = useRuntimeConfig() console.log('运行时配置:', config)
if (process.server) {
console.log('API 密钥:', config.apiSecret)
}
</script> <template>
<div>
<div>请检查开发者控制台!</div>
</div>
</template>
安全提示
- 不要通过渲染或传递给
useState来暴露运行时配置键给客户端。
插件中使用运行时配置
在自定义插件中,可以在
defineNuxtPlugin函数内部使用useRuntimeConfig()。示例:
plugins/config.tsexport default defineNuxtPlugin((nuxtApp) => {
const config = useRuntimeConfig() console.log('API 基础 URL:', config.public.apiBase)
});
服务器路由中使用运行时配置
在服务器路由中,可以使用
useRuntimeConfig访问运行时配置。示例:
server/api/test.tsexport default defineEventHandler(async (event) => {
const { apiSecret } = useRuntimeConfig(event)
const result = await $fetch('https://my.api.com/test', {
headers: {
Authorization: `Bearer ${apiSecret}`
}
})
return result
})
对运行时配置进行类型定义
Nuxt 尝试自动生成 TypeScript 接口,但也可以手动添加类型。
示例:
index.d.tsdeclare module 'nuxt/schema' {
interface RuntimeConfig {
apiSecret: string
}
interface PublicRuntimeConfig {
apiBase: string
}
}
// 当增强类型时,确保始终导入/导出某些内容是很重要的
export {}
指定不同环境的配置
创建自定义环境文件:
首先,你需要创建一个自定义的环境文件,例如 `.env.local`。这个文件应该包含你希望在开发环境中使用的环境变量。
```
# .env.local
MY_VARIABLE=my_value
```
使用--dotenv参数启动 Nuxt 开发服务器:
使用npx nuxi dev --dotenv .env.local命令来启动 Nuxt 开发服务器,并指定要加载的环境文件为.env.local。
```
npx nuxi dev --dotenv .env.local
```
这条命令会执行以下操作:
- 加载 `.env.local` 文件中的环境变量。
- 将这些环境变量添加到 `process.env` 对象中。
- 启动 Nuxt 开发服务器。
自动重启机制:
在开发模式下,Nuxt 会监视.env.local文件的变化。如果你修改了.env.local文件并保存,Nuxt 会自动检测到这些变化,并重启开发服务器以应用新的环境变量值。
这意味着你不需要手动重启服务器,Nuxt 会自动完成这一步骤,确保你的环境变量始终是最新的。
示例
假设你有一个.env.local文件,内容如下:
# .env.local
API_URL=http://localhost:3000/api
DEBUG_MODE=true
你可以使用以下命令启动 Nuxt 开发服务器:
npx nuxi dev --dotenv .env.local
在开发过程中,如果你修改了.env.local文件,例如将DEBUG_MODE改为false:
# .env.local
API_URL=http://localhost:3000/api
DEBUG_MODE=false
保存文件后,Nuxt 会自动检测到变化并重启服务器,使新的环境变量生效。
i .env.local changed, restarting server...
i server restarted.
余下文章内容请点击跳转至 个人博客页面 或者 扫码关注或者微信搜一搜:编程智域 前端至全栈交流与成长,阅读完整的文章:Nuxt.js 环境变量配置与使用 | cmdragon's Blog
往期文章归档:
- 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch | cmdragon's Blog
- 使用 useRequestEvent Hook 访问请求事件 | cmdragon's Blog
- 使用 useNuxtData 进行高效的数据获取与管理 | cmdragon's Blog
- Nuxt 3 使用指南:掌握 useNuxtApp 和运行时上下文 | cmdragon's Blog
- 使用 useLazyFetch 进行异步数据获取 | cmdragon's Blog
- 使用 useLazyAsyncData 提升数据加载体验 | cmdragon's Blog
- Nuxt.js 中使用 useHydration 实现数据水合与同步 | cmdragon's Blog
- useHeadSafe:安全生成HTML头部元素 | cmdragon's Blog
- Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验 | cmdragon's Blog
- 探索Nuxt.js的useFetch:高效数据获取与处理指南 | cmdragon's Blog
- Nuxt.js 错误侦探:useError 组合函数 | cmdragon's Blog
- useCookie函数:管理SSR环境下的Cookie | cmdragon's Blog
- 轻松掌握useAsyncData获取异步数据 | cmdragon's Blog
- 使用
useAppConfig:轻松管理应用配置 | cmdragon's Blog - Nuxt框架中内置组件详解及使用指南(五) | cmdragon's Blog
- Nuxt框架中内置组件详解及使用指南(四) | cmdragon's Blog
- Nuxt框架中内置组件详解及使用指南(三) | cmdragon's Blog
Nuxt.js 环境变量配置与使用的更多相关文章
- Windows 7下配置JDK环境变量,JAVA环境变量配置,Tomcat服务器的使用
参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识: 1.1 War包 War包一般是在进行Web开发 ...
- win 环境下 node.js环境变量
在win 环境下 node.js环境变量有两种情况: (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...
- windows系统Android-sdk的下载与环境变量配置
最近一段时间在做app的开发,作为前端而言,开发app并不像android工程师那样熟悉android开发:无论是使用cordova.js或者react-native开发都需要配置android开发环 ...
- 安装选择msi格式还是zip(windows下Nodejs zip版下载安装及环境变量配置)
安装选择msi格式还是zip((windows下Nodejs zip版下载安装及环境变量配置)) -----以node.js 安装为例: 1,外观对比: ✿ 简单介绍一下node的作用: • node ...
- Nuxt3环境变量配置
Nuxt3 正式发布还不到半年,在投入生产环境使用后,遇到了不少问题,很难找到合适的解决方案,其中环境变量配置就是其中一个,之前一直未能解决,最近要上持续集成,无法绕过这个问题,所以花了点时间研究了一 ...
- 1.JAVA基础复习——计算机基础与环境变量配置
软件开发的了解 软件开发: 软件:一系列按照特定组织的计算机数据和指令的集合. 开发:制作软件. 程序:一系列有序指令的集合. 人机交互 人机交互的方式有两种:图形化界面和命令行方式. 图形化界面:简 ...
- java环境变量配置
1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 ...
- Ant环境变量配置
Ant环境变量配置 1.新建系统变量ANT_HOME 变量名: ANT_HOME 变量值: D:\biancheng\apache-ant-1.7.1 2.修改PATH 变量值最后面 ...
- java、Android SDK、adb环境变量配置,以及JDK1.7换JDK1.8
最近因项目需要使用将JDK1.7换成JDK1.8,故重新清晰地记录各种环境变量的配置: 这里更改的均是系统变量,不是用户变量 java环境变量配置: 变量名 变量值JAVA ...
- ROS学习笔记(四)——环境变量配置
1.查看环境变量配置情况,其实并没有什么卵用 $ export | grep ROS 或者用 $ printenv | grep ROS2.配置环境变量??$ source /opt/ros/indi ...
随机推荐
- Vue cli之安装
1.安装node.js Node.js是一个新的后端(后台)语言,它的语法和JavaScript类似,所以可以说它是属于前端的后端语言,后端语言和前端语言的区别: 运行环境:后端语言一般运行在服务器端 ...
- c#动态执行脚本的3种方式详解
1.使用Roslyn编译器 2.使用IronPython或IronRuby 3.使用JavaScript引擎 在C#中,可以使用一些第三方库或内置类库实现动态执行脚本的功能.以下是几个常用的方案: 1 ...
- WPF基础之样式设置和模板化(三)
IsItemsHost 属性在此示例中,一个必需的重要属性是 IsItemsHost 属性.IsItemsHost 属性用于指示在 ItemsControl(如处理项列表的 ListBox 控件)的模 ...
- windows隐藏文件如何查看
1.组织 2.查看 3.显示隐藏文件
- 使用Visual Studio分析.NET Dump
前言 内存泄漏和高CPU使用率是在日常开发中经常遇到的问题,它们可能会导致应用程序性能下降甚至崩溃.今天我们来讲讲如何使用Visual Studio 2022分析.NET Dump,快速找到程序内存泄 ...
- vue3 elementui plus Select 选择器不选择下拉框里面的数据得到的value值
我们先来看 我点击弹框出现什么都不做 直接点击确定 看传参 tableId,timeColumnId,userColumnId直接是名称而没有获取value值 看下下拉框里面的数据 而我想直接点击获取 ...
- Nodejs概述 安装Nodejs os模块 path模块 url模块 querystring模块
一.Nodejs概述 介绍 相关网址: https://nodejs.org/zh-cn/ http://nodejs.cn/ Node.js 是一个开源与跨平台的JavaScript 运行时环境.它 ...
- 高性能版本的零内存分配LikeString函数(ZeroMemAllocLikeOperator)
继上一篇文章在.NET Core,除了VB的LikeString,还有其它方法吗?(四种LikeString实现分享)分享了四种实现方式,笔者对这四种实现方式,不管是执行性能还是内存分配性能上,都不太 ...
- Pycharm创建的虚拟环境,使用命令行指定库的版本进行安装
Pycharm创建的项目,使用了虚拟环境,对库的版本进行管理:有些项目的对第三方库的版本 要求不同,可使用虚拟环境进行管理 直接想通过pip命令安装,直接看第3点 操作步骤: 1.找到当前项目的虚拟环 ...
- SSM框架笔记 庆祝学习SSM框架结束!!!
终于在2023/3/29日,黑马程序员旗下的ssm框架视频看完了,也是总结了1万多字的笔记,把黑马的和自己的整合了一下 完结撒花,接下来开始学习SpringBoot和软考中级设计师. 总的来说,我还是 ...