vite.config.ts 中增加 "process.env": {} 后uni-app统计报错

vite.config.ts 中增加 “process.env”: {} 后uni-app统计报错

开发环境 版本号 项目创建方式
Mac macOS 12.6.3 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:macOS 12.6.3

HBuilderX类型:正式

HBuilderX版本号:3.95

手机系统:Android

手机系统版本号:Android 13

手机厂商:华为

手机机型:nova 10

页面类型:nvue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

### 操作步骤:


export default defineConfig({
define: {
"process.env": {}
},
})  

增加这个代码,使用uni统计就会直接报错  

reportJSException >>>>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->
Uncaught TypeError: Cannot read property 'reportInterval' of undefined
at get_report_Interval (app-service.js:327948:36)
at  (app-service.js:328061:26)
at  (app-service.js:328796:3)

预期结果:

export default defineConfig({ define: { “process.env”: {} }, })

增加这个代码,使用uni统计正常使用


### 实际结果:


export default defineConfig({
define: {
"process.env": {}
},
})  

增加这个代码,使用uni统计就会直接报错

bug描述:

define: { “process.env”: {} }, 增加了上面的代码后 ,uni统计就会报错,

如果不增加上面代码就会报 process没有定义.

不知道要怎么解决.


![Image](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20231102/e3c4cee5ce0933250d6cb9d559a23666.jpg)

更多关于vite.config.ts 中增加 "process.env": {} 后uni-app统计报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已经解决
因为统计的SDK 源码里没有定义 reportInterval collectItems这两个字段,在判断的时候也没有处理,所以就会报错.
在manifest.json
“uniStatistics” : { “enable” : true, “debug” : true, “reportInterval”: 0, “collectItems”: null, “version” : “2” } 配置下就可以了.希望官方可以在下个版本修复.

更多关于vite.config.ts 中增加 "process.env": {} 后uni-app统计报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 Vite 项目中,如果你在 vite.config.ts 中增加了 process.env: {},可能会导致 uni-app 的统计功能报错。这是因为 uni-app 依赖于 process.env 来获取环境变量,而你在配置中将 process.env 覆盖为一个空对象,导致 uni-app 无法正确获取环境变量。

解决方法

  1. 保留 process.env 的原始值
    你可以在 vite.config.ts 中保留 process.env 的原始值,而不是直接覆盖它。可以通过 define 配置来添加自定义的环境变量,而不是覆盖整个 process.env

    import { defineConfig } from 'vite';
    
    export default defineConfig({
      define: {
        'process.env': {
          ...process.env,
          // 添加自定义环境变量
          CUSTOM_VAR: JSON.stringify('custom_value'),
        },
      },
    });
    
  2. 使用 import.meta.env
    Vite 推荐使用 import.meta.env 来访问环境变量,而不是 process.env。你可以在代码中将 process.env 替换为 import.meta.env

    // 替换前
    const envVar = process.env.VAR_NAME;
    
    // 替换后
    const envVar = import.meta.env.VAR_NAME;
    
  3. 检查 uni-app 的统计代码
    如果 uni-app 的统计代码中使用了 process.env,你可以尝试修改这部分代码,或者联系 uni-app 的开发者,看看是否有其他解决方案。

  4. 使用 dotenv 插件
    如果你需要在 Vite 中使用 .env 文件来管理环境变量,可以使用 dotenv 插件。

    npm install dotenv --save
    

    然后在 vite.config.ts 中配置:

    import { defineConfig } from 'vite';
    import dotenv from 'dotenv';
    
    dotenv.config(); // 加载 .env 文件
    
    export default defineConfig({
      define: {
        'process.env': {
          ...process.env,
          // 添加自定义环境变量
          CUSTOM_VAR: JSON.stringify('custom_value'),
        },
      },
    });
回到顶部