当前位置: 首页 > 知识库问答 >
问题:

前端 - vite vue3,.env.development文件里,自定义变量 VITE_API_DOMAIN,获取不到,报错 process is not defined?

狄易安
2024-07-26

vite vue3,.env.development文件里,自定义变量,获取不到,报错 process is not defined

调用 process.env.VITE_API_DOMAIN,报错,process is not defined,请问是哪配置不对吗?

# 环境
NODE_ENV = development

# 域名
VITE_API_DOMAIN = http://47.1.1.149:5005

# 接口前缀
VITE_API_BASEPATH = base

# 打包路径
VITE_BASE_PATH = ''

# 标题
VITE_APP_TITLE = test

共有3个答案

裴彦
2024-07-26

试下 import.meta.env

沈良策
2024-07-26

vite已经不支持这么写了, 你可以在vite.config.ts中这么来用

 define: {
    'process.env': {
      VITE_API_DOMAIN: 'http://47.1.1.149:5005'
    }
  }

额,要通过文件的话,得用loadEnv

const env = loadEnv(mode, process.cwd());

stackoverflow中已经有回答了,我就不班门弄斧了
https://stackoverflow.com/questions/66389043/how-can-i-use-vite-env-variables-in-vite-config-js

丌官浩旷
2024-07-26

在 Vite 和 Vue 3 的项目中,环境变量是通过特殊的 .env 文件来管理的,但你不能直接在客户端代码(如 Vue 组件或脚本)中通过 process.env 来访问它们,因为 process 对象在浏览器环境中是不存在的。Vite 在构建过程中会将这些环境变量替换为实际的值,但仅限于特定的前缀(默认为 VITE_)开头的环境变量。

为了在你的 Vue 3 组件或脚本中访问这些环境变量,你应该在 vite.config.js 文件中进行配置,以确保这些环境变量在构建时能被注入到代码中。然而,由于你已经在 .env.development 文件中以 VITE_ 开头定义了你的变量,Vite 应该已经自动处理了它们。

但是,你需要在客户端代码中通过 import.meta.env 来访问这些变量,而不是 process.env。例如:

// 在你的 Vue 组件或脚本中
const apiDomain = import.meta.env.VITE_API_DOMAIN;
const apiBasePath = import.meta.env.VITE_API_BASEPATH;
// ... 其他环境变量

console.log(apiDomain); // 应该输出 "http://47.1.1.149:5005"

如果你确实需要在客户端代码中访问 process.env(尽管在 Vite 中不推荐这样做),你可以使用 @rollup/plugin-replace 或其他类似插件来手动注入这些值,但这通常不是必要的,因为 import.meta.env 提供了更好的方式来访问环境变量。

确保你的 vite.config.js 文件没有配置错误,特别是关于环境变量处理的部分。如果一切正常,但问题仍然存在,请检查你的构建输出或控制台日志,看是否有其他相关的错误或警告信息。

 类似资料:
  • 我想使用自定义配置文件访问会话变量,如果未设置,则使用回退。 但在添加Session::get()后,我会收到一个HTTP错误500 [05-May-2016 19:53:16]不推荐使用PHP:不应在/Users/../config/constants.PHP中静态调用非静态方法Symfony\Component\HttpFoundation\Session\Session::has() 发生了

  • 使用指南 - 数据报告 - 访客分析 - 利用自定义变量报告自定义访客属性 通过自定义变量,可以提供您自定义的访客群体的网站访问状况,包括这个群体的网站访问次数、平均访问页数、跳出率等指标,帮助助您了解这个访客群体在您网站的访问情况。 在使用前要进行相关自变量的设置,具体请参考 在查看报告时,也可以对来源、访客过滤筛选查看。

  • 前端文件: /src/app/api/compress/route.ts 后端文件:src/app/api/upload/route.ts 报错内容: 麻烦各位熟悉Next的大佬看一下 问题代码的GitHub地址:https://github.com/AnsonZnl/next-upload

  • 需要实现一个扇形的网格,并在上面标注轨迹,极坐标一直是圆形的,使用自定义报错of undefined (reading 'findAxisModel')" option = { 这是自定义的写法,运行不出来,各位大佬给出出注意

  • 问题内容: 我知道这是一个基本问题,但是我很好奇下面的代码为什么不起作用。没有用例不会声明此变量。 我得到错误 我确定这只是我还在学习的基本GOLANG内容。 谢谢你的支持 问题答案: 块有自己的范围。在您的情况下,它们在外部不可见。 您可以在修复前声明。 文件:https://golang.org/ref/spec#Declarations_and_scope 您可能还需要阅读:Go中的声明范围

  • 我不只是想用钩子添加所有的自定义元数据,因为我需要对输出进行非常严格的控制。例如,对于在购物车页面中包含自定义域,下面的答案可以很好地工作:在Woocommerce购物车中显示自定义域的值&Checkout items 但我也希望它们出现在结帐、订单详细信息和电子邮件中,并完全控制它们出现的HTML(在某些情况下,它们也需要转换,例如,Unix时间戳转换为人类可读的时间)。 在模板中,我尝试了以下