错误:找不到模块“ejs”
Posted
技术标签:
【中文标题】错误:找不到模块“ejs”【英文标题】:Error: Cannot find module 'ejs' 【发布时间】:2011-12-06 23:24:43 【问题描述】:这是我的完整错误:
Error: Cannot find module 'ejs'
at Function._resolveFilename (module.js:317:11)
at Function._load (module.js:262:25)
at require (module.js:346:19)
at View.templateEngine (/Users/shamoon/local/node/lib/node_modules/express/lib/view/view.js:133:38)
at Function.compile (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:65:17)
at ServerResponse._render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:414:18)
at ServerResponse.render (/Users/shamoon/local/node/lib/node_modules/express/lib/view.js:315:17)
at /Users/shamoon/Sites/soldhere.in/app.js:26:7
at callbacks (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:272:11)
at param (/Users/shamoon/local/node/lib/node_modules/express/lib/router/index.js:246:11)
我的源码也很简单:
var express = require('express');
var app = module.exports = express.createServer();
// Configuration
app.configure(function()
app.use(express.bodyParser());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
);
app.set('view engine', 'ejs');
app.set('view options',
layout: false
);
app.get('/', function(req, res)
res.render('index',
message : 'De groeten'
);
);
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
在我的文件夹中,我在使用npm install ejs
获得的node_modules 中安装了ejs。
所以我的问题是.. 什么给了?我做错了什么,当我清楚地安装它时节点找不到 EJS?
谢谢
【问题讨论】:
您是否在全球范围内安装了 express?如果我没记错的话,我在全局安装 express 和在本地安装 ejs 时遇到问题。尝试在您的项目文件夹中安装 express 或在全局模块文件夹中安装 ejs。 我遇到了同样的问题。我最终删除了 node_modules 目录并重新安装 npm install -g. 【参考方案1】:几天前我遇到了同样的问题,但无法解决。尚未设法正确解决问题,但这可以作为临时解决方案:
上一层(高于 app.js)并执行npm install ejs
。它将创建一个新的 node_modules 文件夹,然后 Express 应该会找到该模块。
【讨论】:
npm install ejs -g
可能是更简洁的解决方法。 (-g
全局安装)
在将我的应用程序部署到 Openshift 时,我遇到了同样的错误,并注意到我忘记在 packages.json
中添加对 ejs
的依赖项。现在它工作正常(npm install
在下次重启时自动完成)。
我不认为你想在全球范围内安装node_module
,我之前也做过同样的事情,当你部署时它会变得很痛苦
我只是在我的 'package.json' 文件中添加了 'express' 模块作为依赖项,它就开始工作了。因此,请确保将“ejs”和“express”都作为依赖项提及。
显然,我赞成主要答案(呃),但我也想感谢 @Stephen Bugs Kamenar 建议 (-g) 全局安装。我实际上作弊并做了两个(懒惰的我),它在重新启动我的应用程序后立即起作用。【参考方案2】:
在本地安装 express
(npm install express
在项目的根目录中)
您的项目同时依赖于express
和ejs
,因此您应该在package.json
中将它们都列为依赖项。
这样,当您在项目目录中运行 npm install
时,它会同时安装 express
和 ejs
,因此 var express = require('express')
将是 express 的 本地 安装(知道您在本地安装的 ejs
模块)而不是全局模块,后者不知道。
一般来说,最好在 package.json
中明确列出所有依赖项,即使其中一些可能已经全局安装,因此您不会遇到这些类型的问题。
【讨论】:
【参考方案3】:我的情况,我只是在 package.json 中手动添加了 ejs:
"name": "myApp"
"dependencies":
"express": "^4.12.2",
"ejs": "^1.0.0"
然后运行 npm install(也许你需要用 sudo 运行它) 请注意,默认情况下,ejs 会查看视图目录
【讨论】:
【参考方案4】:我有同样的问题。一旦我将环境变量 NODE_PATH 设置为我的模块的位置(在我的情况下是 /usr/local/node-v0.8.4/node_modules),问题就消失了。附言如果您需要指定多个目录,则 NODE_PATH 接受冒号分隔的目录列表。
【讨论】:
这非常重要,但经常被错过,+1 给你皮特! 我没有 NODE_PATH env var,所以一个简单的export NODE_PATH=.
为我的项目工作,它的依赖项在它自己的目录下。干杯【参考方案5】:
当我遇到同样的问题时。
JSON 文件中存在 ejs 依赖项,尝试在本地和全局安装它,但没有成功。
然后我所做的是通过以下方式手动添加模块:
app.set('view engine','ejs');
app.engine('ejs', require('ejs').__express);
然后就可以了。
【讨论】:
当您在子模块中将 express 作为依赖项时尤其如此 这使得 [ejs] 在通过 webpack 编译(或者如果不使用 typescript 则简单地捆绑)你的服务器时可以发现它。 (需要将视图复制到 dist 或进一步工作才能使其正常工作;但是。)【参考方案6】:我在 express 目录级别使用命令npm install ejs
安装了ejs
,这解决了我的问题。
我已经使用快递指南http://expressjs.com/guide.html中提到的步骤安装快递
【讨论】:
【参考方案7】:在本地安装而不是在全局安装。那么你的项目可以在任何机器上运行而没有任何错误。我认为它更好。
npm install express --save
npm install ejs --save
【讨论】:
【参考方案8】:安装 Express V x.x.x 后 您需要选择一个模板视图引擎。有很多真的很容易学。我个人的首选是EJS。
其他真正伟大且易于学习的可能是:
Handlebars PUG (Former Jade)安装 EJS(并修复您的错误) 在项目的根目录中运行:
npm install ejs
或者如果您使用的是 Yarn:
yarn add ejs
接下来你需要 require 模块,所以打开你需要 express 的文件(通常是 app.js 或 server.js)
在下面添加var express = require('express');
var ejs = require('ejs');
【讨论】:
【参考方案9】:我有同样的问题。所以我做了以下事情,它对我有用。
解决方案:
-
如果尚未完成,请在项目目录中运行“npm init”。
安装ejs并表达如下:
npm install ejs --save npm install express --save
这样做会在 package.json 文件中创建所需的依赖项
【讨论】:
【参考方案10】:我遇到了这个问题。我使用 node-inspector 进行调试,并从 express 源文件所在的 node_modules 文件夹中看到,没有安装 ejs。所以我在那里安装了它并且它工作了。
npm install -g ejs
没有将它放在我期望的位置,尽管 NODE_PATH 设置为相同的 node_modules 文件夹。可能做错了,刚从节点开始。
【讨论】:
【参考方案11】:我同时安装了:express 和 ejs,带有选项 --save:
npm install ejs --save npm install express --save
这种方式 express 和 ejs 是依赖 package.json 文件。
【讨论】:
【参考方案12】:重新安装 npm、express 和 ejs 解决了我的问题
这个对我有用,
-
在您的终端或 cmd -> 转到您的应用程序目录,
cd pathtoyourapp/AppName
重新运行“npm install”
重新运行“npm install express”
重新运行“npm install ejs”
之后,错误得到修复。
【讨论】:
【参考方案13】:第 1 步
查看项目根级别的npm ls | grep ejs
,检查您是否已将ejs
dependency
添加到项目中。
如果没有,请将其作为dependencies
添加到您的项目中。 (我更喜欢将依赖项添加到 package.json
而不是 npm install
ing 模块。)
例如。
"name": "musicpedia",
"version": "0.0.0",
"private": true,
"scripts":
"start": "node ./bin/www"
,
"dependencies":
"body-parser": "~1.15.1",
"cookie-parser": "~1.4.3",
"debug": "~2.2.0",
"express": "~4.13.4",
"jade": "~1.11.0",
"ejs": "^1.0.0",
"morgan": "~1.7.0",
"serve-favicon": "~2.3.0"
第 2 步下载依赖项
npm install
第 3 步检查 ejs 模块
$ npm ls | grep ejs
musicpedia@0.0.0 /Users/prayagupd/nodejs-fkers/musicpedia
├── ejs@1.0.0
【讨论】:
太棒了!完成了上述所有操作,但没有再次运行 npm install 。谢谢。 您是说npm install
添加"ejs": "^1.0.0"
后不起作用?如果是这样,请删除该行并以npm install ejs
- npmjs.com/package/ejs 的另一种方式安装。它应该在 package.json 中添加一个 ejs: latest version
【参考方案14】:
在package.json
中添加依赖,然后运行npm install
...
...
"dependencies":
"express": "*",
"ejs": "*",
【讨论】:
【参考方案15】:我认为你的机器上没有正确安装 ejs 模板引擎。 您只需使用 npm 安装模板引擎
npm install ejs --save
然后在 app.js 中包含以下代码
app.set('view engine', 'ejs')
【讨论】:
【参考方案16】:在我的项目目录中安装 express 后,我遇到了同样的问题。以前我使用 npm install 命令的 -g 选项在全局范围内安装它。
【讨论】:
【参考方案17】:就我而言,没有愚蠢的语法错误,但出现了同样的错误。 我已经在全球范围内安装了 ejs 和 ejs-mate。我在本地安装它,发现我的错误已解决。
【讨论】:
【参考方案18】:请确保您的 package.json 文件中的依赖项是最新的。在确保您的 NPM 是最新版本(最新)之后,尝试一次重新安装它们。它对我有用。我建议您为软件包运行npm install
(这在我自己的情况下因为我手动添加了依赖项而拒绝工作后才起作用)。
【讨论】:
【参考方案19】:就我而言,这是一个愚蠢的错误——它是中间件中的一个错字。我写了app.set('view engine', 'ejs.');
点导致了错误。我在本地安装了ejs和express
【讨论】:
【参考方案20】:确保已安装所有依赖项。 npm install
我正在为自己制作一个快速应用程序,但忘记添加 express。抛出上述错误。
【讨论】:
【参考方案21】:我遇到同样的 ejs 错误,然后我只运行 node install ejs
这将再次安装 ejs。
然后还运行npm install
再次安装node_modules。
这对我有用。
【讨论】:
【参考方案22】:我在第一次运行我的应用程序之前忘记安装 ejs 后遇到了这个问题。出于某种原因,在稍后安装后没有看到 ejs。我找到了一个快速、干净、有效的解决方案,即在重新启动服务器之前,在本地目录中运行npm uninstall express
然后运行npm install express
来重新安装 express。
【讨论】:
【参考方案23】:
npm i ejs --force
这对我有用
【讨论】:
【参考方案24】:在本地安装 express 解决了我同样的问题。 npm i express --save
【讨论】:
欢迎您!为什么以及如何? Express 默认安装在本地用于开发。【参考方案25】:我遇到了同样的问题并尝试了一些给定的解决方案,但仍然无法正常工作。我所做的就是在我的项目的根文件夹中运行“npx yarn”命令,就是这样。
【讨论】:
【参考方案26】:app.set('view engine', 'ejs')
然后在终端中
npm install ejs --save
解决问题
【讨论】:
【参考方案27】:就我而言,我只是卸载然后重新安装 ejs。
npm uninstall ejs
然后
npm install ejs
【讨论】:
【参考方案28】:npm install ejs --save
为我工作! ✅
在 goormIDE 上,我有这个文件配置:
容器 main.js package-lock.json package.json node_modules 查看次数 home.ejs在我的 main.js 文件中,我也有这条路线
app.get("/", function(req, res)
res.render("home.ejs");
)
npm install ejs -g
没有在 package.json 中添加对应的依赖。
npm install ejs --save
做到了。我从容器目录执行了命令行。可以手动将其添加到 package.json 中:
**
"dependencies":
"ejs": "^3.0.2",
**
【讨论】:
【参考方案29】:你必须有
const ejs = require('ejs')
app.set('view engine', 'ejs')
【讨论】:
【参考方案30】:安装 node express 项目后,您需要为此安装 ejs 或 pug 包
你也可以试试node
npm install ejs
npm install pug
或者你可以试试纱线
yarn add ejs
yarn add pug
全局或本地
【讨论】:
以上是关于错误:找不到模块“ejs”的主要内容,如果未能解决你的问题,请参考以下文章