web-dev-qa-db-fra.com

Erreur: Impossible de trouver le module 'ejs'

Voici mon erreur complète:

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)

Mon code source est aussi très simple:

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

Dans mon dossier, j'ai installé ejs dans node_modules que j'ai obtenu en utilisant npm install ejs.enter image description here donc ma question est .. ce qui donne? Qu'est-ce que je fais mal pour que ce noeud ne puisse pas trouver EJS quand je l'ai clairement installé?

Merci

65
Shamoon

J'ai eu exactement le même problème il y a quelques jours et je ne pouvais pas le comprendre. N'a pas réussi à résoudre le problème correctement mais cela fonctionne comme un correctif temporaire:

Remontez d’un niveau (au dessus de app.js) et faites npm install ejs. Il créera un nouveau dossier node_modules et Express devrait alors trouver le module.

107
evilcelery

Installez express localement

(npm install express dans le répertoire racine du projet)


Votre projet dépend à la fois de express et de ejs. Vous devez donc les répertorier en tant que dépendances dans votre package.json

Ainsi, lorsque vous exécuterez npm install dans votre répertoire de projet, il installera les express et ejs, de sorte que var express = require('express') sera l'installation local de express (qui connaît le module ejs que vous avez installé localement) plutôt que le un qui ne le fait pas.

En général, il est judicieux de répertorier explicitement toutes les dépendances dans votre package.json, même si certaines d'entre elles sont peut-être déjà installées globalement. Vous n'avez donc pas ce type de problème.

18
Will

J'ai eu le même problème. Une fois que j'ai défini la variable d'environnement NODE_PATH sur l'emplacement de mes modules (/usr/local/node-v0.8.4/node_modules dans mon cas), le problème a disparu. P.S. NODE_PATH accepte une liste de répertoires séparés par des deux-points si vous devez en spécifier plusieurs.

8
Pete

Je mon cas, je viens d'ajouter manuellement ejs dans package.json:

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

Et courir npm installer (peut-être avez-vous besoin de l'exécuter avec Sudo) Veuillez noter que ejs regarde le répertoire de vues par défaut

6
levon

J'ai installé ejs à l'aide de la commande npm install ejs au niveau du répertoire express et cela a résolu mon problème.

j'ai installer express en utilisant les étapes mentionnées dans express guide http://expressjs.com/guide.html

4
Ramesh Kotkar

J'ai installé à la fois: express et ejs avec l'option --save:

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

De cette façon, express et ejs sont des fichiers package.json de dépendance.

3
colo

Installez-le localement plutôt que de l'installer globalement. Ensuite, votre projet peut être exécuté sur n’importe quelle machine sans erreur. Je pense que c’est mieux.

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

J'ai eu ce problème. J'ai débogué en utilisant node-inspector et j'ai vu que depuis le dossier node_modules où se trouvaient les fichiers source express, ejs n'était pas installé. Alors je l'ai installé là et cela a fonctionné.

npm install -g ejs ne l'a pas mis là où je m'attendais bien que NODE_PATH soit défini sur le même dossier node_modules. Prob faire mal, vient de commencer avec noeud.

2
Typo Johnson

Ajouter une dépendance dans package.json et ensuite exécuter npm install

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

La réinstallation de npm, express et ejs a corrigé mon problème.

Celui-ci a fonctionné pour moi,

  1. Sur votre terminal ou cmd -> Accédez au répertoire de vos applications,
  2. cd pathtoyourapp/AppName
  3. réexécutez votre 'installation npm'
  4. réexécutez votre 'npm install express'
  5. réexécutez votre 'npm install ejs'

après cela, l'erreur a été corrigée.

2
apelidoko

Je pense que le moteur de template ejs n'est pas correctement installé sur votre machine. Vous venez d’installer le moteur de template avec npm

npm install ejs --save

puis incluez le code suivant dans app.js

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

ÉTAPE 1

Voir npm ls | grep ejs à la racine de votre projet pour vérifier si vous avez déjà ajouté ejsdependency à votre projet.

Sinon, ajoutez-le en tant que dependencies à votre projet. (Je préfère ajouter une dépendance à package.json au lieu de npm installer le module.)

par exemple.

{                                                                                                      
  "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 télécharger les dépendances

npm install

STEP 3 check module ejs

$ npm ls | grep ejs
[email protected] /Users/prayagupd/nodejs-fkers/musicpedia
├── [email protected]
2
prayagupd

Chemin du retour quand le même problème s'est produit avec moi.

La dépendance existait pour ejs dans le fichier JSON, a essayé de l’installer localement et globalement mais n’a pas fonctionné.

Ensuite, j'ai ajouté manuellement le module en:

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

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

Alors ça marche.

1
Kael

Dans mon cas, il n’ya pas eu d’erreur de syntaxe stupide, mais la même erreur s’est produite… j’avais installé ejs et ejs-mate globalement. Je l'ai installé localement et j'ai trouvé mon erreur résolue.

1

J'ai le même problème qu'il résoudre après l'installation de l'express dans mon répertoire de projet. auparavant, je l'installais dans le champ d'application global avec l'option -g avec la commande npm install.

1
Mohit

Dans mon cas, c'était une erreur stupide - c'était une faute de frappe dans le middleware. J'ai écrit app.set('view engine', 'ejs.'); le point a provoqué l'erreur. J'ai installé ejs et express localement

0
Surajit Mukherjee

veuillez vous assurer que vos dépendances dans vos fichiers package.json sont à jour. Essayez de les réinstaller un à la fois après vous être assuré que votre NPM est la version la plus récente (mise à jour). Cela a fonctionné pour moi. Je vous conseille d'exécuter npm install pour les paquets (c'est ce qui a fonctionné dans mon propre cas après qu'il ait refusé de fonctionner parce que j'ai ajouté les dépendances manuellement).

0
douglas egiemeh
app.set('view engine', 'ejs')

puis dans le terminal

npm install ejs --save 

résout le problème

0
Homam Bahrani

Après avoir installé Express V x.x.xVous devez choisir un moteur de visualisation de modèle. Il y en a beaucoup vraiment facile à apprendre. Mon adresse personnelle est EJS

Autres vraiment bons et faciles à apprendre pourraient être:

Pour installer EJS (et corrigez votre erreur) Exécutez-le à la racine de votre projet:

npm install ejs

Ou si vous utilisez du fil:

yarn add ejs

Ensuite, vous aurez besoin du module, alors ouvrez votre fichier là où vous avez besoin d’express (généralement app.js ou server.js)

ajouter ci-dessous var express = require('express');

var ejs = require('ejs');
0
Timm Jensen