记录 Vite 报错 process is not defined 报错问题

由于导入别人开发好的插件,在开发的时候报了process is not defined的错误,记录一下解决方式,方便后续使用。

 

 1.查看里面具体的报错信息是找不到process这个问题。

原因: process.env 已经被遗弃(我个人查询百度,大佬们说的,具体我也不知道,反正大致知道原因是这个用不了)以下是大佬给的解决方法

解决方式1:

使用import.meta.env代替process.env关键字

解决方式2:

在 vite.config.ts 中增加 define

import { defineConfig } from 'vite'
// ...
export default defineConfig({
  // ...
  define: {
    'process.env': {}
  }
})

或者

import { defineConfig } from 'vite'
// ...
export default defineConfig({
  // ...
  define: {
    'process.env': process.env
  }
})

2.我在上面使用方式2进行导入process.env这个问题,接着又报找不到NODE_DEBUG这个问题,

npm install dotenv --dev 
或者
yarn add dotenv --dev

 我在vite.config.ts里面进行配置,并且在.env.development和.env.production里都进行NODE_DEUBUG进行配置

// 环境导入配置
import dotenv from "dotenv";


export default defineConfig((mode: ConfigEnv): UserConfig => {
    const define = {
		"process.env": process.env
    };
    if (mode.mode === "development") {
	    dotenv.config({ path: ".env.development" });
    } else if (mode.mode === "production") {
	    dotenv.config({ path: ".env.production" });
    }

    return {
        define: define,
        ......
    }

}

3.紧接着我的又报错global is not defined的问题。
 看大佬们说,需要在define里面进行配置,我跟着这样配置,然后就可以使用,很不错。

// 环境导入配置
import dotenv from "dotenv";


export default defineConfig((mode: ConfigEnv): UserConfig => {
    const define = {
		"process.env": process.env
        global: {}
    };
    if (mode.mode === "development") {
	    dotenv.config({ path: ".env.development" });
    } else if (mode.mode === "production") {
	    dotenv.config({ path: ".env.production" });
    }

    return {
        define: define,
        ......
    }

}

4.都以为第三步完美解决了吗?NONO,等你打包的时候就会发现,会报另一个毫无相关的错误,我的报这个错误rollup-plugin-dynamic-import-variables,但是我进去的文件里面发现找到报错信息位置发现是注释,他告诉我注释有问题,这不是开玩笑吗?后来看了一下大佬,有的说的是vite.config.ts里打印了console.log()这个问题,反正拿我自己对比的,肯定不是这些错误,我一气之下,把导入的插件这些参数全部屏蔽后发现,可以正常编译,我怀疑是process.env或者global这两个参数有问题,测试后发现,是global这个参数有问题。想着既能够开发时候使用,编译的使用也能够使用。

 

 开发环境的配置

// 环境导入配置
import dotenv from "dotenv";


export default defineConfig((mode: ConfigEnv): UserConfig => {
    const define = {
		"process.env": process.env
    };
    if (mode.mode === "development") {
	    dotenv.config({ path: ".env.development" });
        define.global = {};
    } else if (mode.mode === "production") {
	    dotenv.config({ path: ".env.production" });
    }

    return {
        define: define,
        ......
    }

}

 编译的配置需要在main.ts的添加以下参数

window.global ||= window;

 

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值