运行nodemon时遭遇‘Module not found’错误,请求排查解决
解决"Module not found"错误及代码问题
1. 拆分前后端代码,移除前端中的后端依赖
你当前把后端服务代码和前端React入口代码混在一起了,这是核心问题:
apollo-server-express是用来搭建GraphQL后端的工具,根本不该在前端React文件里导入,这直接会导致模块找不到(哪怕装了依赖,这么用也是逻辑错误)- 前端只需要保留客户端相关代码,后端代码要单独抽出来放到另一个文件里(比如
server.js)
修正后的前端index.js:
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App.jsx'; import 'bootstrap/dist/css/bootstrap.css'; import { ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client'; // 只保留前端客户端配置 const client = new ApolloClient({ uri: 'http://localhost:4000/graphql', // 要指向后端的完整GraphQL端点路径 cache: new InMemoryCache(), }); ReactDOM.render( <ApolloProvider client={client}> <App /> </ApolloProvider>, document.getElementById('root') );
新建后端server.js文件:
import express from 'express'; import { ApolloServer } from 'apollo-server-express'; import { typeDefs } from './Schema/type-defs'; import { resolvers } from './Schema/resolvers'; const app = express(); async function startServer() { const server = new ApolloServer({ typeDefs, resolvers, }); await server.start(); server.applyMiddleware({ app }); app.listen({ port: 4000 }, () => { console.log('GraphQL server running at http://localhost:4000/graphql'); }); } startServer();
2. 检查并安装缺失的依赖
执行命令补全所有需要的依赖:
# 前端依赖 npm install react react-dom @apollo/client bootstrap # 后端依赖 npm install apollo-server-express express graphql
3. 验证文件路径正确性
- 确认
./Schema/type-defs、./Schema/resolvers文件真实存在,文件名大小写要完全匹配(Node.js对文件名大小写敏感) - 确认
App.jsx路径正确,如果文件后缀是.js,就把导入路径改成./App.js
4. 分别启动前后端
- 启动后端:
node server.js(如果用ES模块语法,需要在package.json里添加"type": "module") - 启动前端:用React项目默认的启动命令(比如
npm start)
内容的提问来源于stack exchange,提问作者Hlobi Lukhele
相关产品推荐
相关产品推荐

