vite添加环境变量import.meta.env

本文介绍如何在Vite项目中配置不同环境变量,通过修改package.json中的scripts字段及创建对应的环境变量文件实现多环境部署。针对实际使用过程中遇到的问题提供了具体解决方案。

在不同的文件里面配置不同的环境变量,可以让我们的配置更加容易维护和使用,这里我们说下vite配置环境变量和模式是怎么配置的。
Vite 在一个特殊的 import.meta.env 对象上暴露环境变量,官网上的东西咱这里就不抄了,O(∩_∩)O哈哈~
我们这里直接说怎么做的,毕竟官网上没有实际使用的例子,在下在实际使用的时候还遇到点问题,当然也可以说是自己没用对吧。

package.json里面的scripts修改,增加多个环境模式,如:

"scripts": {
    "dev": "vite serve --mode development",
    "test": "vite serve --mode test",
    "ppe": "vite serve --mode ppe",
    "prod": "vite serve --mode production",
    "build:dev": "vue-tsc --noEmit && vite build --mode development",
    "build:test": "vue-tsc --noEmit && vite build --mode test",
    "build:ppe": "vue-tsc --noEmit && vite build --mode ppe",
    "build:prod": "vue-tsc --noEmit && vite build --mode production",
    "serve": "vite preview"
  }

在项目目录下增加环境变量的文件,如:
.env.development

# 开发环境变量
VITE_APP_TITLE=记账簿development

.env.test

# 质控环境变量
VITE_APP_TITLE=记账簿test

.env.production

# 生产环境变量
VITE_APP_TITLE=记账簿

在vue里面使用,比如:

console.log('VITE_APP_TITLE:' + import.meta.env.VITE_APP_TITLE);

这里面有个问题需要注意,就是字符串里面不能直接用import.meta.env.的方式使用,不然打包的时候会报错,可以用’import.meta\u200b.env.VITE_APP_TITLE’的方式使用,这个其实在官网上有说到,不过没怎么用到的话时间一长就容易忘了,贴下报错信息,方便后面复查:

D:\study\gitee\study\vite2vue3study>npm run build:prod

> vite2vue3study@0.0.0 build:prod D:\study\gitee\study\vite2vue3study
> vue-tsc --noEmit && vite build --mode production

vite v2.5.5 building for production...
✓ 16 modules transformed.
[rollup-plugin-dynamic-import-variables] Unexpected token (12:18)
file: D:/study/gitee/study/vite2vue3study/src/views/About.vue?vue&type=script&lang.ts:12:18
error during build:
SyntaxError: Unexpected token (12:18)
    at Parser.pp$4.raise (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16958:13)
    at Parser.pp.unexpected (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:14466:8)
    at Parser.pp.expect (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:14460:26)
    at Parser.pp$3.parseExprList (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16827:12)
    at Parser.pp$3.parseSubscript (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16192:25)
    at Parser.pp$3.parseSubscripts (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16149:24)
    at Parser.pp$3.parseExprSubscripts (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16133:21)
    at Parser.pp$3.parseMaybeUnary (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16096:17)
    at Parser.pp$3.parseExprOps (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16029:19)
    at Parser.pp$3.parseMaybeConditional (D:\study\gitee\study\vite2vue3study\node_modules\rollup\dist\shared\rollup.js:16012:19)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! vite2vue3study@0.0.0 build:prod: `vue-tsc --noEmit && vite build --mode production`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the vite2vue3study@0.0.0 build:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2021-09-17T08_00_39_340Z-debug.log

<think> 根据用户的问题,用户希望在Vite项目中定义import.meta环境变量的方法。根据提供的引用,特别是引用[1]和引用[2],我们知道import.meta.env用于访问环境变量,但默认只能获取Vite开发的环境变量。因此,需要定义环境变量并让Vite能够注入到import.meta.env中。 Vite使用dotenv从项目根目录下的.env文件中加载环境变量。这些文件包括: - .env: 所有情况下都会加载 - .env.local: 所有情况下都会加载,但会被git忽略 - .env.[mode]: 只在指定模式下加载(如.env.production) - .env.[mode].local: 只在指定模式下加载,但会被git忽略 在Vite中,只有以`VITE_`为前缀的环境变量才会通过import.meta.env暴露给客户端代码。这是为了防止意外泄露敏感信息。 因此,定义环境变量的步骤如下: 1. 在项目根目录下创建.env文件(例如.env.development用于开发模式,.env.production用于生产模式)。 2..env文件中定义以`VITE_`为前缀的环境变量,例如: ``` VITE_API_URL=https://api.example.com ``` 3.Vite项目中,这些变量就可以通过import.meta.env.VITE_API_URL访问。 另外,还可以在运行Vite命令时指定模式(mode): ```bash vite build --mode production ``` 这样Vite就会加载对应的.env文件(如.env.production)。 注意:如果使用的是Vite的老版本(<=4.1),则需要手动安装dotenv。 总结步骤: - 创建.env文件,并定义以`VITE_`为前缀的环境变量。 - 根据不同的环境(开发、生产等)创建不同的.env文件(可选)。 - 在代码中使用import.meta.env访问这些变量。 引用[1]提到,默认情况下import.meta.env只能获取Vite开发的环境变量,因此通过以上方法定义的环境变量(以VITE_为前缀)就可以被获取。 另外,引用[2]详细介绍了import.meta.envVite扩展的元属性,用于访问环境变量,进一步确认了上述方法。 因此,回答用户:定义环境变量的方法就是创建.env文件并定义以VITE_开头的变量,然后Vite会自动注入到import.meta.env中。 相关问题: 1. 如何在Vite中区分开发和生产环境变量? 2. Vite环境变量如何防止敏感信息泄露? 3. 除了.env文件,还有哪些方式配置Vite环境变量? </think> ### Vite项目中定义`import.meta.env`环境变量的方法 在Vite项目中定义`import.meta.env`环境变量需遵循以下步骤: #### 1. **创建环境文件** 在项目根目录创建`.env`文件(或按环境区分): - `.env`:通用环境变量 - `.env.development`:开发环境专用变量 - `.env.production`:生产环境专用变量 #### 2. **定义变量规则** 所有需要暴露给客户端的变量**必须以`VITE_`开头**: ```env # .env.development VITE_API_BASE_URL = https://dev.api.example.com VITE_DEBUG_MODE = true # .env.production VITE_API_BASE_URL = https://api.example.com ``` #### 3. **加载特定环境文件** Vite会根据当前运行模式自动加载对应文件: ```bash # 开发模式(默认加载.env.development) vite dev # 生产模式(默认加载.env.production) vite build ``` #### 4. **代码中使用变量** ```javascript // 客户端代码中访问 console.log(import.meta.env.VITE_API_BASE_URL); // 服务器端通过import.meta.env访问 ``` #### 5. **自定义模式(可选)** 指定自定义环境文件: ```bash vite build --mode staging // 加载.env.staging ``` #### ️ 重要注意事项: 1. **安全规则**: 非`VITE_`前缀的变量不会暴露给客户端,防止敏感信息泄露 2. **类型支持**: 在`env.d.ts`中添加类型声明: ```typescript interface ImportMetaEnv { VITE_API_BASE_URL: string; VITE_DEBUG_MODE: boolean; } ``` 3. **文件优先级**: `.env.local` > `.env.[mode]` > `.env`[^2] > 通过以上配置,Vite会在编译时将环境变量静态替换到客户端代码中,确保运行时可直接通过`import.meta.env`访问[^1][^2]。 --- ###
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值