Render.com部署Node后端连接MongoDB时缺失@mongodb-js/saslprep模块
部署Render Node后端时@mongodb-js/saslprep模块缺失问题解决
问题背景
计划在Render.com部署餐厅项目的Node后端,Vercel部署React前端,但后端部署时触发错误:找不到模块/opt/render/project/src/server/node_modules/@mongodb-js/saslprep/dist/node.js。已尝试删除node_modules重装依赖、重建dist文件夹、更新GitHub仓库,问题仍未解决。
错误详情
Error: Cannot find module '/opt/render/project/src/server/node_modules/@mongodb-js/saslprep/dist/node.js' at createEsmNotFoundErr (node:internal/modules/cjs/loader:1181:15) at finalizeEsmResolution (node:internal/modules/cjs/loader:1169:15) at resolveExports (node:internal/modules/cjs/loader:591:14) at Module._findPath (node:internal/modules/cjs/loader:668:31) at Module._resolveFilename (node:internal/modules/cjs/loader:1130:27) at Module._load (node:internal/modules/cjs/loader:985:27) at Module.require (node:internal/modules/cjs/loader:1235:19) at require (node:internal/modules/helpers:176:18) at Object.<anonymous> (/opt/render/project/src/server/node_modules/mongodb/lib/cmap/auth/scram.js:4:20) at Module._compile (node:internal/modules/cjs/loader:1376:14) {code: 'MODULE_NOT_FOUND',path: '/opt/render/project/src/server/node_modules/@mongodb-js/saslprep/package.json'}
后端package.json内容
{ "name": "server", "version": "1.0.0", "description": "backend bridge between mongoDb and client frontend app", "main": "server.js", "scripts": { "start": "node dist/server.js", "build": "babel src -d dist", "dev": "nodemon --exec babel-node src/server.js", "both-dev": " concurrently \"npm run dev\" \"npm --prefix ../client/ run dev\" " }, "author": "Gerard", "license": "ISC", "dependencies": { "bcryptjs": "^2.4.3", "body-parser": "^1.20.2", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "date-fns": "^3.0.6", "dotenv": "^16.4.5", "express": "^4.19.1", "express-jwt": "^8.4.1", "jsonwebtoken": "^9.0.2", "moment": "^2.30.1", "mongoose": "^8.2.3", "multer": "^1.4.5-lts.1", "qs": "^6.12.0", "validator": "^13.11.0" }, "devDependencies": { "@babel/cli": "^7.24.1", "@babel/core": "^7.24.3", "@babel/node": "^7.23.9", "@babel/preset-env": "^7.24.3", "babel-plugin-module-resolver": "^5.0.0", "concurrently": "^8.2.2", "nodemon": "^3.1.0" } }
项目目录结构
tds-restaurant | |_ .github | |_ client --- | |_ node_modules | |_ src | |_ env.local | |_ eslintrc.js | |_ .gitignore | |_ index.html | |_ package-lock.json | |_ package.json | |_ README.md | | | |_ vite.config.js | | |_ server --- | |_ dist | |_ node_modules | |_ src | |_ env | |_ .gitignore | |_ package-lock.json | |_ package.json
解决方法
- 显式安装缺失依赖:在server目录下执行
npm install @mongodb-js/saslprep,提交更新后的package.json和package-lock.json到GitHub,重新触发Render部署。该模块是mongodb的可选依赖,Render构建环境可能未自动安装,手动安装可强制其被包含。 - 检查Render构建命令:确保Render项目的构建步骤包含
npm install和npm run build,避免跳过依赖安装环节。 - 清理Render构建缓存:在Render项目设置中找到缓存清理选项,清除旧缓存后重新部署,避免缓存的异常依赖导致问题。
- 统一Node版本:在server的package.json中添加
"engines": {"node": ">=18.x"}指定Node版本,确保本地开发版本与Render部署版本一致。
内容的提问来源于stack exchange,提问作者BeOnMotion
相关产品推荐
相关产品推荐

