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

使用Vite+React+Apollo Client时Node modules报错求助

解决Vite环境下Apollo Client集成的语法错误问题

问题原因

Vite与CRA(Create React App)的环境变量处理逻辑存在差异,导致graphql包中的process.env.NODE_ENV被错误转换为非法语法格式,引发代码执行崩溃。

解决方案

1. 确认依赖安装

确保项目已正确安装@apollo/client和graphql依赖:

npm install @apollo/client graphql
# 或使用yarn
yarn add @apollo/client graphql

2. 配置Vite环境变量映射

在项目根目录的vite.config.js(或vite.config.ts)中添加define配置,将process.env.NODE_ENV映射为Vite原生环境变量:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  define: {
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
  }
})

3. 优化Apollo Client导入方式

无需从@apollo/client/core子模块导入,直接从主包导入即可(官方推荐方式,避免路径相关潜在问题):

import {
  ApolloClient,
  InMemoryCache,
  ApolloProvider,
  gql,
} from "@apollo/client";

const client = new ApolloClient({
  uri: "https://flyby-router-demo.herokuapp.com/",
  cache: new InMemoryCache(),
});

ReactDOM.createRoot(document.getElementById("root")).render(
  <ApolloProvider client={client}>
    <React.StrictMode>
      <App />
    </React.StrictMode>
  </ApolloProvider>
);

4. 重启开发服务

修改配置后,重启Vite开发服务器使配置生效:

npm run dev
# 或
yarn dev

功能验证

服务启动后,可在App组件中添加测试查询验证Apollo Client是否正常工作:

import { useQuery } from '@apollo/client';

const GET_LOCATIONS = gql`
  query GetLocations {
    locations {
      id
      name
      description
      photo
    }
  }
`;

function App() {
  const { loading, error, data } = useQuery(GET_LOCATIONS);

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error : {error.message}</p>;

  return (
    <ul>
      {data.locations.map((location) => (
        <li key={location.id}>{location.name}</li>
      ))}
    </ul>
  );
}

export default App;

内容的提问来源于stack exchange,提问作者Anteater333

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:04:59