官网的ts项目包,其中.env是我自己加上去用于配置环境的,让我们下载这两依赖
安装dotenv与cross-env两库到开发依赖
配置vite的--mode为production不起作用,运行后VITE_USER_NODE_ENV 仍然为'development'
,假如我们配一下cross -env 如果同名的话,其中uni配置的变量仍然会重置为development
运行script
我们来打印VITE_USER_NODE_ENV,NODE_ENV 还是development
,如何控制procress读取到想要的配置?
方法一:(改名)我们注入的变量
改为NODE_ENVI后能够成功的打印出来
我们配合dotenv将配置文件读出来
....
import * as fs from 'fs'
import * as dotenv from "dotenv"
import {join} from 'path'
// https://vitejs.dev/config/
const obj=dotenv.parse(fs.readFileSync(join(__dirname,`.env.${process.env.NODE_ENVI}`)))
for (const objKey in obj) {
process.env[objKey]=obj[objKey]
}
console.log(process.env.ENVI)
export default defineConfig({
server:{
port:Number(process.env.PORT)||5777
},
...
})
打印控制台
与我们定义的env配置文件内容一样
方法二:(拓展脚本)
这是uniapp官方的plus script
我们也可以拓展配置,如这样
同样需要配置脚本,uni -p h5-product 设置运行的路径
运行脚本后我们再打印读到了APP_ENV
可以通过json反序列化一下
可以读到
我们可以去axios配置打印
网页有输出
不过还是要从import.meta.env里读取
方法二读取用的uniapp自带的script拓展,方法一注入envi不知道换别的平台还能否正常读取,不过有cross env在应该是能解决,方法二只用下一个dotenv就可以了
(第一次写文章,有错误欢迎提出)