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
. 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
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.
(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.
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.
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
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
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.
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
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.
Ajouter une dépendance dans package.json
et ensuite exécuter npm install
{
...
...
"dependencies": {
"express": "*",
"ejs": "*",
}
}
La réinstallation de npm, express et ejs a corrigé mon problème.
Celui-ci a fonctionné pour moi,
après cela, l'erreur a été corrigée.
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')
ÉTAPE 1
Voir npm ls | grep ejs
à la racine de votre projet pour vérifier si vous avez déjà ajouté ejs
dependency
à 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 install
er 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]
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.
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.
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.
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
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).
app.set('view engine', 'ejs')
puis dans le terminal
npm install ejs --save
résout le problème
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');