错误:找不到模块“ ejs”


80

这是我的完整错误:

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);

在我的文件夹中,我在使用的node_modules中安装了ejs npm install ejs在此处输入图片说明所以我的问题是。我做错了什么,以致于我清楚地安装了该节点之后就找不到EJS?

谢谢


抱歉,但是哈哈@ message:'De groeten'–
Rob

1
您在全球范围内安装了Express吗?如果我没记错的话,在全球范围内安装Express和本地EJS时遇到问题。尝试在您的项目文件夹中安装Express或在全局模块文件夹中安装ejs。
pkyeck 2011年

我有同样的问题。我最终删除了node_modules目录,然后重新安装了npm install -g。
罗伯特·沃尔特斯

Answers:


144

几天前我也遇到了同样的问题,无法解决。未能正确解决问题,但这可以作为临时解决方案:

上一层(在app.js之上)并执行npm install ejs。它将创建一个新的node_modules文件夹,然后Express应该找到该模块。


13
npm install ejs -g可能是一种更清洁的解决方法。(-g用于全局安装)
Farzher 2012年

2
将我的应用程序部署到Openshift时,我遇到了相同的错误,并注意到我忘记ejs在in中添加依赖项packages.json。现在它可以正常工作(npm install在下次重新启动时自动完成)。
Bastien Jansen 2014年

1
我认为您不希望在node_module全球范围内安装,我之前也做过同样的事情,并且在部署时会很痛苦
pourmesomecode 2015年

1
我只是将“ express”模块作为依赖项添加到了“ package.json”文件中,它开始工作。因此,请确保同时提及“ ejs”和“ express”作为依赖项。
Prateek

显然,我赞成主要答案,但我也想赞扬@Stephen Bugs Kamenar提出的(-g)全局安装建议。我实际上作弊了并且都做(懒惰了),并且在重新启动我的应用程序后立即起作用。
Benedict先生

21

在本地安装Express

npm install express在项目的根目录中)


您的项目同时依赖expressejs,因此您应将它们都列为依赖项package.json

这样,当您npm install在项目目录中运行时,它将同时安装expressejs,因此var express = require('express')将是express的本地安装(它知道ejs您在本地安装的模块),而不是全局的本地安装。

通常,最好在您的所有依赖项中明确列出所有依赖项,package.json即使其中的某些依赖项可能已全局安装,因此您不会遇到此类问题。


9

我遇到过同样的问题。将环境变量NODE_PATH设置为模块的位置(在本例中为/usr/local/node-v0.8.4/node_modules)后,问题就消失了。如果需要指定多个目录,则PS NODE_PATH接受用冒号分隔的目录列表。


这是非常重要的,经常会被错过,请您为Pete +1!
javabeangrinder 2012年

1
我没有NODE_PATH env var,因此export NODE_PATH=.对我的项目有一个简单的工作,它的依赖项位于其自己的目录下。干杯
格雷格

9

我的情况是,我只是在package.json中手动添加了ejs :

 {
   "name": "myApp"
   "dependencies": {
     "express": "^4.12.2",
     "ejs": "^1.0.0"
   }
 }

并运行npm install(也许您需要使用sudo运行它)请注意,默认情况下ejs会查看views目录


6

当我遇到相同的问题时,可以追溯到过去。

JSON文件中的ejs有依赖关系,尝试在本地和全局安装它,但没有用。

然后我所做的是通过以下方式手动添加模块:

app.set('view engine','ejs'); 

app.engine('ejs', require('ejs').__express);

然后就可以了。


当你表达作为子模块的依赖,这是尤其如此
user210504



3

我有这个问题。我使用node-inspector进行调试,发现从快速源文件所在的node_modules文件夹中未安装ejs。所以我在那安装了它,并且工作了。

npm install -g ejs尽管将NODE_PATH设置为相同的node_modules文件夹,却没有将它放在我期望的位置。可能做错了,只是从节点开始的。


3

我使用--save选项安装了express和ejs:

npm install ejs --save npm install express --save

这种方式express和ejs是Dependecies package.json文件。


3

重新安装npm,express和ejs解决了我的问题

这个对我有用

  1. 在终端或cmd上->转到您的应用目录,
  2. cd pathtoyourapp / AppName
  3. 重新运行您的“ npm安装”
  4. 重新运行您的“ npm install express”
  5. 重新运行您的“ npm install ejs”

之后,该错误已修复。


3

安装Express V xxx后,您需要选择一个模板视图引擎。有很多真的很容易学习。我个人最喜欢的是EJS

其他真正伟大且易于学习的可能是:

要安装EJS(并修复错误),请在项目的根目录中运行:

npm install ejs

或者,如果您使用的是Yarn:

yarn add ejs

接下来,您需要使用该模块,因此在需要表达的地方打开文件(通常是app.js或server.js)

在下面添加 var express = require('express');

var ejs = require('ejs');

2

步骤1

npm ls | grep ejs在项目的根级别查看,以检查是否已添加ejs dependency到项目中。

如果不是,请将其添加dependencies到您的项目中。(我更喜欢添加依赖项,package.json而不是添加npm install模块。)

例如。

{                                                                                                      
  "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"                                                                          
  }                                                                                                    
}   

STEP 2下载依赖项

npm install

STEP 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。它应该ejs: latest version在package.json中添加一个
祈祷时间为

2

添加依赖项package.json,然后运行npm install

    {
  ...
  ... 
  "dependencies": {
    "express": "*",
    "ejs": "*",
  }
}

2

我认为您的计算机上未正确安装ejs模板引擎。您只需使用npm安装模板引擎

npm install ejs --save

然后在app.js中包含以下代码

app.set('view engine', 'ejs')

2

我有同样的问题。所以我做了以下工作,它为我工作。

解:

  1. 如果尚未运行,请在项目目录中运行“ npm init”。
  2. 安装ejs并表示如下:

npm install ejs --save
npm install express --save

通过这样做,它在package.json文件中创建所需的依赖项


1

在我的项目目录中安装Express后,它解决了相同的问题。以前,我使用npm install命令通过-g选项将其安装在全局范围内。



1

请确保您在package.json文件中的依赖关系是最新的。在确保NPM为最新版本(最新)之后,尝试一次重新安装它们。它为我工作。我建议您运行npm install这些程序包(这是我自己决定不起作用的原因,因为我手动添加了依赖性)。


1

就我而言,这是一个愚蠢的错误-这是中间件中的错字。我写app.set('view engine', 'ejs.');了点导致错误。我安装了ejs并在本地表达


1

确保已安装所有依赖项。 npm install

我为自己制作了一个快速应用程序,却忘了添加快递。抛出以上错误。


1

我遇到了ejs的相同错误,然后我只运行了node install ejs 它,这将再次安装ejs。

然后npm install再次运行以安装node_modules。那对我有用。


1

我在第一次运行我的应用程序之前忘记安装ejs之后遇到了这个问题。由于某种原因,以后安装ejs后未看到。我找到了解决此问题的快速,干净且有效的解决方案,该方法是在重新启动服务器之前在本地目录中运行npm uninstall express然后重新安装express npm install express




0

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",}

**




0

我遇到了同样的问题,并尝试了一些给定的解决方案,但仍然无法正常工作。我所做的就是在项目的根文件夹中运行“ npx yarn”命令,仅此而已。


-1

当我使用goormIDE时,该错误使我震惊。当节点在运行文件中打包arent时,基本上会发生这种情况。执行app.js或home.js的地方。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.