为什么在Netlify Lambda无服务环境中Express无法找到ejs模块
Netlify Serverless 项目Cannot find module ejs 问题解决方案
- 确认ejs被写入项目根目录
package.json的dependencies字段,而非devDependencies。本地运行时可加载全局安装的包,Netlify构建阶段仅会安装dependencies下的依赖,若ejs未在该字段下,执行npm install ejs --save后重新提交部署即可。 - 显式指定模板文件路径:Netlify Serverless 函数运行时的工作目录与本地不同,express默认的模板查找路径会失效,需要手动配置views目录,参考配置如下:
// 请根据自身项目的目录结构调整路径,示例假设views文件夹存放在项目根目录,函数文件存放在netlify/functions/index.js app.set('views', path.join(__dirname, '../../views')) app.set('view engine', 'ejs')
- 清理构建缓存重新部署:若确认依赖配置无误,可在Netlify控制台对应项目的「Deploys」页面,选择「Trigger deploy」-「Clear cache and deploy site」,清除历史构建缓存后重新执行构建流程,避免旧缓存导致的依赖加载异常。
- 移除手动调整的node_modules目录:不要手动移动node_modules目录的位置,该目录由包管理器自动管理,手动调整路径会导致依赖查找逻辑混乱,删除手动移动的node_modules后重新执行
npm install生成依赖目录即可。 - 检查
netlify.toml配置是否正确,确认functions目录指向正确,示例配置如下:
[build] functions = "netlify/functions" command = "npm install" # 可根据自身项目的构建需求调整命令
内容的提问来源于stack exchange,提问作者Ali Medani
相关产品推荐
相关产品推荐

