nuxt3 env文件、全局变量处理

有两种方向

  1. 通过配置nuxt.config.ts + Nuxt提供的钩子函数,实现全局变量的获取

    1. runtimeconfig

    2. env文件往runtimeconfig放入内容

    3. useAppConfig

  2. 通过env文件配置来获取服务端全局变量,客户端通过vite.define实现

nuxt.config.ts + Nuxt钩子

1. runtimeconfig服务端|全局变量

nuxt.config.ts文件中,配置runtimeconfig对象,该对象的值只能使用useRuntimeConfig从服务器访问到,适合配置一些API秘钥相关的不暴露给前端的数据

但其中runtimeConfig.publicruntimeConfig.app中的值会暴露给前端

export default defineNuxtConfig({runtimeConfig: {apiKey: "xxx", // 该值只能在服务端获取// public中的值会暴露给前端public: {baseURL: "https://www.blockxu.top",},},
})

客户端获取:

请添加图片描述

服务端获取:

请添加图片描述

2. env文件覆盖runtimeConfig中内容

如果在env文件中设置了相同名称(NUXT_API_xxxNUXT_PUBLIC_xxx)的变量,就会覆盖掉runtimeConfig|runtimeConfig.app|runtimeConfig.public中的变量

NUXT_API_KEY = 'my-api-key'
NUXT_PUBLIC_BASE_URL = '/foo/'

请添加图片描述

3. app.config.ts文件配置内容

在根目录创建app.config.ts,文件内部的变量可以useAppConfig()获取到

export default defineAppConfig({foo: "bar",title: "Hello Nuxt",theme: {dark: true,colors: {primary: "#ff0000",},},
});
const appConfig = useAppConfig();
console.log("---appConfig.foo", appConfig.foo); // 输出 => "bar"

env文件写入、process.env获取

终端命令中添加--dotenv .env.dev

注:如果只写--dotenv .env.dev,只能在运行时获取到

"dev": "nuxt dev --dotenv .env.dev"
"build": "nuxt build --dotenv .env.prod"
...
VUE_APP_VALUE = 'VALUE123123' 
VUE_APP_BASEURL = 'https://www.blockxu.top'
...

运行后,在服务器上,通过process.env.VUE_APP_VALUE就可以获取到对应的变量

console.log(process.env.VUE_APP_VALUE) // => 'VALUE123123' 

该方法只能在服务端获取,客户端中无法获取到env文件中的内容[UnhandledSchemeError: Reading from “virtual:windi.css” is not handled by plugins (Unhandled scheme).](UnhandledSchemeError: Reading from “virtual:windi.css” is not handled by plugins (Unhandled scheme).)

console.log("-----------process.env", process.env); // 客户端

请添加图片描述
请添加图片描述

服务端:

请添加图片描述

放入process.env

在执行build后nuxt build --dotenv .env.prod,不论在客户端还是服务端,都无法获取到process.env

console.log("-----------process");
try {console.log(process);
} catch (error) {console.log("error", error);
}

请添加图片描述

解决办法

通过vite实现

let define = {};
// 处理process.env以便在客户端能够取到
Object.keys(process.env).forEach((name) => {define["process.env." + name] = JSON.stringify(process.env[name]);
});export default defineNuxtConfig({vite: {define: {...define,}}
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win32 TEXT()宏学习

之前学习了_T()宏&#xff1b; _T()是MFC的&#xff1b; TEXT()是win32的&#xff1b; _T("")定义于tchar.h&#xff1b; TEXT宏是windows程序设计中经常遇到的宏&#xff0c;定义在 <winnt.h>中&#xff1b; 如果使用UNICODE字符集&#xff0c;则TEXT&…

kubernetes(三)

文章目录 1. k8s弹性伸缩1.1 安装heapster监控1.2 弹性伸缩使用和验证 2. 持久化存储2.1 emptyDir 1. k8s弹性伸缩 k8s弹性伸缩&#xff0c;需要附加插件heapster 1.1 安装heapster监控 使用heapster(低版本)可以监控pod压力大不大 使用hpa调节pod数量&#xff0c;自动扩容或…

chatgpt3.5和chatgpt4的区别

ChatGPT4是基于GPT-3模型的一个实例&#xff0c;但ChatGPT4已经进行了进一步的改进和优化。GPT-3&#xff08;第三代生成式预训练模型&#xff09;是OpenAl开发的一个大型语言模型&#xff0c;它在很多自然语言处理任务中表现出色。 ChatGPT4继承了GPT-3的基本架构和能力&…

清风数学建模笔记-聚类算法

K-maens算法&#xff1a; 算法的原理&#xff1a; 在论文中时&#xff0c;可以把一些可以流程化的算法的流程图加上去 优点&#xff1a; 缺点&#xff1a; 点容易受异常值的影响&#xff0c;且受影响较大 k-means算法&#xff1a; 使用SPSS进行聚类分析&#xff1a; S默认使用…

CCNP课程实验-07-OSPF-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错点1&#xff1a;R1-R2之间认证不匹配错误2&#xff1a;hello包的时间配置不匹配错误3&#xff1a;R2的e0/1接口区域配置不正确错误4&#xff1a;R4的e0/1接口没有配置进OSPF错误5&#xff1a;R2的区域1没有配置成特殊区域错误6&#x…

深度学习 | 多模态算法

AIGC也就是AI内容生成已经成为新一轮人工智能发展的热点和必然趋势&#xff0c;它使得大规模高质量的创作变得更加容易。 一 、InstructGPT模型 1、GPT系列回顾 chatGPT和InstructGPT都使用了指示学习和基于人工反馈的强化学习来指导模型的训练&#xff0c;不同点仅仅是在采集数…

c语言:用结构体求平均分|练习题

一、题目 用c语言的结构体&#xff0c;求4位学生成绩的平均分 如图&#xff1a; 二、代码截图【带注释】 三、源代码【带注释】 #include <stdio.h> float aver();//声明平均分函数 void printScore();//声明打印函数 //设置结构体&#xff0c; struct student { …

JMeter CSV 参数文件的使用方法

.在 JMeter 测试中&#xff0c;参数化是非常重要的&#xff0c;参数化允许我们模拟真实世界中的各种情况。本文我们将探讨如何在 JMeter 中使用 CSV 参数文件。 创建 CSV 文件 首先&#xff0c;我们需要创建一个逗号分隔的值&#xff08;CSV&#xff09;文件&#xff0c;其中…

CompressAI:深度学习与传统图像压缩

1、图像压缩算法原理 传统的有损图像压缩方法&#xff0c;如JPEG &#xff0c; JPEG2000 &#xff0c; HEVC或AV1或VVC&#xff0c;在类似的编码方案上进行了迭代改进&#xff1a;将图像划分为像素块&#xff0c;使用变换域通过线性变换(例如:DCT或DWT)去相关空间频率&#xf…

SpringBoot使用支付宝沙箱环境进行仿真支付

目录 一、进入支付宝开发平台—沙箱环境 二、点击沙箱进入沙箱环境 三、Java二维码生成技术 1、导入依赖 2、生成指定url对应的二维码图片 四、支付接口 1、保存好沙箱应用里面的公钥私钥 2、 测试接口 3、扫码 4、买家结果 5、卖家结果 五、回调接口 1、使用内网…

el-select 多选,选有一个未选择的选项

多选有未选择这个选项后。会出现一个情况&#xff0c;绑定的数据为[‘未选择’,‘cpu1’,‘cpu2’] 进行一个处理&#xff0c;选择&#xff08;未选择&#xff09;就清除&#xff08;其它的选择&#xff09;&#xff0c;选择&#xff08;cpu&#xff09;就清除&#xff08;未选…

RocketMQ快速入门

RocketMQ快速入门 RocketMQ提供了发送多种发送消息的模式&#xff0c;例如同步消息&#xff0c;异步消息&#xff0c;顺序消息&#xff0c;延迟消息&#xff0c;事务消息等&#xff0c;我们一一学习 1.1 消息发送和监听的流程 我们先搞清楚消息发送和监听的流程&#xff0c;然…

自制c++题目《模板综合》

1.输出结果&#xff1a; 2.主函数不允许改变 int arr[5] { 5,2,3,1,4}; char arr1[5] { a,c,b,e,d }; good <int>a(arr,5); good <char>b(arr1,5); bad<int>(1,2); bad<float>(1.1, 1.2); 自制c题目《模板综合》 王赫辰/c语言 - Gitee.com

引导和服务

目录 一、Linux操作系统引导过程 1、引导过程总览图 2、引导过程的详细步骤 二、系统初始化进程 1、init进程&#xff08;串行启动&#xff09; 2、Systemd&#xff08;并行启动&#xff09; 3、Centos6与Centos7的区别&#xff1a; 4、Systemd单元类型 5、运行级别所…

EFCore8泛化关系在数据库中的体现

如图&#xff0c;在关系数据库中&#xff0c;数据表达为一张表&#xff0c;用一个字段“Discriminator”来做区分&#xff1a; 要达到这样的效果&#xff08;数据库中的结构&#xff09;&#xff0c;需要在XXContext中将继承关系的三个类都加上&#xff1a; public DbSet<P…

在 Mac 上轻松安装和配置 JMeter

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 要安装 Java&#xff0c;请按…

想学鸿蒙,又怕找不到工作?能有前途吗?

鸿蒙有没有前途&#xff0c;能不能找到工作&#xff1f;其实这与市场行情有关&#xff0c;这几年的互联网大家都已经感受到了&#xff0c;十分悲凉。不管是前端还是Android等开发行业&#xff0c;不是被裁员就是内卷严重&#xff0c;这几年倒下了无数家中小型互联网企业。 而作…

腾讯云2024年最新优惠活动整理汇总

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为用户提供优质、高效的服务。为了更好地满足用户需求&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;本文将对腾讯云最新优惠活动进行整理汇总&#xff0c;帮助用户更好地了解和利用这些福利。 一、腾讯云新用…

kali2.0安装VMware Tools 和自定义改变分辨率

kali2.0安装VMware Tools 和自定义改变分辨率 VMware Tools 简介&#xff1a;VMware Tools安装&#xff1a;自定义改变分辨率&#xff1a;xrandr命令修改分辨率&#xff1a; 前言&#xff1a; 因为kali2.0比较老 所以需要手动安装 WMware Tools 进行复制粘贴操作&#xff01; …

企业需要专业的合同档案管理系统吗

文书合同是企业与供应商、客户、员工等签订的重要文件&#xff0c;具有法律效力和约束力。合同档案管理系统可以帮助企业有效管理合同文件&#xff0c;提高合同管理的效率和准确性。 专久智能合同档案管理系统具备以下优点&#xff1a; 1. 文件安全性&#xff1a;合同文件经过专…