103 votes

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 . entrez la description de l'image ici donc ma question est .. qu'est-ce qui donne? Qu'est-ce que je fais de mal pour que ce nœud ne puisse pas trouver EJS alors que je l'ai clairement installé ?

Merci

181voto

evilcelery Points 7371

J'ai eu exactement le même problème il y a quelques jours et je n'arrivais pas à le résoudre. Je n'ai pas réussi à résoudre le problème correctement, mais cela fonctionne comme une solution temporaire :

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

13voto

Kael Points 71

Il y a longtemps que le même problème m'est arrivé.

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

Ensuite, ce que j'ai fait, c'est d'ajouter manuellement le module en :

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

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

Ensuite, ça marche.

11voto

levon Points 639

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

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

Et exécutez npm install (vous devrez peut-être l'exécuter avec sudo ) Veuillez noter que ejs regarde le répertoire de vues par défaut

9voto

Pete Points 166

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X