搭建NodeJS+ExpressJS后端服务时遭遇大量模块未找到错误求助
Node.js + Express 后端「模块未找到」错误排查与解决
搭建Node.js和Express后端服务时,出现大量「模块未找到」错误,以下是项目相关信息及解决方案:
项目配置文件
package.json
{ "name": "node-assignment", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "build": "webpack --config webpack.config.js", "start:dev": "cross-env NODE_ENV=development nodemon server.js", "start:prod": "npm run build && NODE_ENV=production node build/bundle.js" }, "author": "Het Patel", "license": "ISC", "dependencies": { "cross-env": "^7.0.3", "dotenv": "^16.0.3", "express": "^4.18.2", "mongoose": "^6.9.2", "morgan": "^1.10.0", "webpack": "^5.82.0", "webpack-cli": "^5.1.1" }, "devDependencies": { "nodemon": "^2.0.20" } }
webpack.config.js
const path = require("path"); module.exports = { mode: "production", entry: "./server.js", output: { path: path.resolve(__dirname, "build"), filename: "bundle.js", }, };
项目文件结构

控制台报错截图

解决方案
1. 配置Webpack针对Node.js环境打包
Webpack默认目标环境是浏览器(target: 'web'),会将Node.js核心模块及第三方依赖当作浏览器模块处理,导致运行时找不到模块。需修改webpack.config.js,添加target: 'node':
const path = require("path"); module.exports = { mode: "production", target: "node", // 指定打包目标为Node.js环境 entry: "./server.js", output: { path: path.resolve(__dirname, "build"), filename: "bundle.js", }, };
该配置会让Webpack保留Node.js的require语句,不会将node_modules中的依赖打包进bundle,而是让Node.js在运行时自行加载。
2. 检查文件导入路径
确认项目中所有相对路径导入(如routes、models目录下的文件引用)是否正确,避免因路径拼写错误导致模块找不到。
3. 确保依赖安装完整
执行以下命令重新安装所有依赖,避免因依赖缺失引发错误:
npm install
内容的提问来源于stack exchange,提问作者Het Patel
相关产品推荐
相关产品推荐

