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.comstack (/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 également 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, ejs est installé dans node_modules et j’ai utilisé npm install ejs
. alors ma question est ce qui donne? Que fais-je mal pour que le nœud ne puisse pas trouver EJS quand je l’ai clairement installé?
Merci
J’ai eu exactement le même problème il y a quelques jours et je ne pouvais pas le comprendre. 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
. Il créera un nouveau dossier node_modules et Express devrait trouver le module à ce moment-là.
( npm install express
dans le répertoire racine du projet)
Votre projet dépend à la fois des express
et ejs
, vous devriez donc les énumérer toutes les deux comme dépendances dans votre package.json
.
De cette façon, lorsque vous exécuterez npm install
dans votre répertoire de projet, il installera à la fois express
et ejs
, de sorte que var express = require('express')
sera l’installation locale d’express (qui connaît le module ejs
que vous avez installé localement). ) plutôt que le global, ce qui ne le fait pas.
En général, c’est une bonne idée de lister explicitement toutes les dépendances dans votre package.json
même si certaines d’entre elles sont déjà installées globalement, vous n’avez donc pas ce type de problèmes.
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.
Dans mon cas, j’ai juste ajouté ejs manuellement dans package.json :
{ "name": "myApp" "dependencies": { "express": "^4.12.2", "ejs": "^1.0.0" } }
Et lancez npm install (peut-être avez-vous besoin de l’exécuter avec sudo ) Veuillez noter que ejs regarde le répertoire des vues par défaut
J’ai installé ejs
utilisant 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 de la mention dans le guide express http://expressjs.com/guide.html
J’ai installé les deux: express et ejs avec l’option –save:
npm install ejs –save npm install express –save
De cette façon, les fichiers express et ejs sont des fichiers package.json de dépendances.
Installez-le localement plutôt que de l’installer globalement. Ensuite, votre projet peut être exécuté sur n’importe quelle machine sans aucune erreur. Je pense que c’est mieux.
npm install express --save npm install ejs --save
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é. Donc je l’ai installé là et ça a fonctionné.
npm install -g ejs
ne l’a pas placé là où je l’attendais même si NODE_PATH était défini sur le même dossier node_modules. Probablement le faire mal, vient de commencer avec node.
ÉTAPE 1
Voir npm ls | grep ejs
npm ls | grep ejs
au niveau racine de votre projet pour vérifier si vous avez déjà ajouté la dependency
ejs
à votre projet.
Sinon, ajoutez-le en tant que dependencies
à votre projet. (Je préfère append une dépendance à package.json
au lieu de npm install
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" } }
ÉTAPE 2, téléchargez les dépendances
npm install
STEP 3 vérifier le module ejs
$ npm ls | grep ejs [email protected] /Users/prayagupd/nodejs-fkers/musicpedia ├── [email protected]
Ajoutez une dépendance dans package.json
, puis exécutez npm install
{ ... ... "dependencies": { "express": "*", "ejs": "*", } }
Je pense que le moteur de template ejs n’est pas correctement installé sur votre machine. Vous venez d’installer le moteur de template en utilisant npm
npm install ejs --save
puis inclure le code suivant dans app.js
app.set('view engine', 'ejs')
Je résous le même problème après avoir installé express dans mon répertoire de projet. Auparavant, je l’installais dans une scope globale avec l’option -g avec la commande npm install.
Dans mon cas, il n’y avait pas d’erreur de syntaxe idiote, 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.
Réinstaller npm, express et ejs corrigé mon problème
Celui-ci a travaillé pour moi,
Après cela, l’erreur a été corrigée.
app.set('view engine', 'ejs')
et puis dans le terminal
npm install ejs --save
résout le problème
veuillez vous assurer que vos dépendances dans vos fichiers package.json sont à jour. Essayez de les réinstaller un par un, en vous assurant également que votre NPM est la dernière version (à jour). Cela a fonctionné pour moi. Je vous conseille de lancer npm install
pour les paquets (c’est ce qui a fonctionné dans mon propre cas après avoir refusé de travailler car j’ai ajouté les dépendances manuellement).
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 causé l’erreur. J’ai installé ejs et express localement
Après avoir installé Express V xxx Vous devez choisir un moteur de vue de modèle. Il y a beaucoup vraiment facile à apprendre. Mon interlocuteur personnel est EJS .
Un autre très bon et facile à apprendre pourrait être:
Pour installer EJS (Et corriger votre erreur) Exécutez à la racine de votre projet:
npm install ejs
Ou si vous utilisez Yarn:
yarn add ejs
Ensuite, vous aurez besoin du module, alors ouvrez votre fichier où vous avez besoin d’express (généralement app.js ou server.js)
ajoutez ci-dessous var express = require('express');
var ejs = require('ejs');