Express应用渲染EJS文件报错:Cannot find module 'ejs'
解决Express中EJS模块找不到的问题(Error: Cannot find module 'ejs')
核心排查与修复步骤:
确认本地依赖有效性:Node.js优先加载项目本地
node_modules中的模块,全局安装无法替代本地依赖。执行以下命令确保EJS被正确添加到项目依赖:npm install ejs --save检查项目根目录的
node_modules文件夹是否存在ejs子目录,同时确认package.json的dependencies中包含ejs条目。修正视图路径与渲染写法:
你的代码存在两处关键问题:- Express默认会在项目根目录的
views文件夹(注意复数)查找视图文件,若你的文件夹名为view,需手动指定视图目录:const path = require("path"); app.set("views", path.join(__dirname, "view")); - 已设置
view engine为ejs时,res.render()无需添加.ejs后缀,直接传入文件名即可:res.render("create");
- Express默认会在项目根目录的
清理模块缓存与重装依赖:
若存在模块缓存冲突,执行以下操作重置依赖:rm -rf node_modules package-lock.json npm install重启Node服务,确保缓存完全清空。
匹配Node环境版本:
若使用多版本Node(如nvm),需确保当前项目使用的Node版本与EJS安装环境一致。执行nvm use切换到项目对应的Node版本后,重新安装EJS。
修改后的完整代码:
const express = require("express"); const mongoose = require("mongoose"); const morgan = require("morgan"); const path = require("path"); const app = express(); app.use(morgan("dev")); app.use(express.json()); // 配置EJS视图引擎与视图目录 app.set("view engine", "ejs"); app.set("views", path.join(__dirname, "view")); app.get("/", (req, res) => { res.render("create"); }); mongoose .connect("mongodb://127.0.0.1:27017/Pull_request") .then(() => { app.listen(8000, () => { console.log("app is listening on port 8000"); }); }) .catch((err) => { console.log(err); });
内容的提问来源于stack exchange,提问作者zissad
相关产品推荐
相关产品推荐

