解决Jest的TS1343错误后,Vite构建出现process.env标识符无效问题
解决方案:修复Vite构建时的环境变量标识符错误
问题根源
你遇到的构建错误,是因为vite.config.js里同时配置了define: {"process.env": {}}和EnvironmentPlugin("all"),导致Vite尝试注入系统环境变量(比如Windows下的CommonProgramFiles(x86)),而这类带括号的变量名不符合JavaScript标识符规范,触发了构建报错。同时你替换import.meta.env为process.env的做法也没必要,反而增加了配置复杂度。
分步修复
1. 调整Vite配置,移除冲突项
修改vite.config.js:
- 删除
define中的"process.env": {},避免和EnvironmentPlugin的变量注入逻辑冲突 - 不要用
EnvironmentPlugin("all"),显式指定需要注入的环境变量(比如只包含VITE_前缀的变量)
export default defineConfig({ // 移除这个冲突的define配置 // define: { // "process.env": {} // }, plugins: [ // ...其他插件 EnvironmentPlugin({ // 只注入VITE_开头的环境变量,或者显式列出需要的变量 VITE_LANG: process.env.VITE_LANG, // 其他需要的变量... }) ], esbuild: { jsxFactory: "h", jsxFragment: "Fragment" // ...其他配置 }, envDir: "./src/environments" })
2. 恢复代码中的import.meta.env引用
你不需要把代码里的import.meta.env改成process.env,改回原来的写法即可,同时注意在JSX中要放在大括号里:
const AboutUs = ({ toast }: types.PageProps) => { return ( <> <h1>language:</h1> <h2>{import.meta.env.VITE_LANG}</h2> {/* 恢复成import.meta.env,并用大括号包裹 */} </> ) }
3. 修复Jest的import.meta错误(无需替换变量)
针对Jest的TS1343错误,不需要修改业务代码,而是在Jest配置中添加transform处理:
- 确保已安装
@types/node(你已经在tsconfig里配置了node类型) - 在
jest.config.js中添加transform配置,用babel处理import.meta:
module.exports = { transform: { "^.+\\.(ts|tsx)$": "ts-jest", // 用babel处理import.meta语法 "^.+\\.(js|jsx)$": "babel-jest" }, // 其他Jest配置... }
4. 清理不必要的依赖
如果调整配置后不再需要,可以卸载babel-plugin-transform-import-meta,减少冗余依赖。
验证修复
执行yarn build:dev重新构建,应该能正常完成;同时运行Jest测试,也不会再出现TS1343错误。
内容的提问来源于stack exchange,提问作者semicolon
相关产品推荐
相关产品推荐

