You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:37:07