J'ai écrit ma première application node.js, mais elle ne trouve pas de bibliothèque express:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Mais express est installé (avec -g
clé):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Des informations:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
Comment puis-je résoudre ce problème? ( Dois- je l'installer sans -g
?)
Réponses:
Vous devez installer Express localement dans le contexte de votre application (
node_modules
dossier):La raison en est que les applications recherchent toujours dans leur contexte local toutes les dépendances. L'installation globale sert uniquement à configurer les binaires disponibles à l'échelle du système, tels que les exécuteurs de tests unitaires ou les bootstrappers ou des choses comme ça.
Avec Express, lorsque vous l'installez globalement, vous obtenez un
express
binaire qui peut démarrer une application pour vous. Pour plus d'informations, saisissezDonc, pour répondre à votre dernière question: OUI , vous devez l'installer sans
-g
.la source
winston
installé globalement, ce qui fonctionnait pour une raison quelconque lors du démarrage de mon application en tant qu'utilisateur normal, mais lors du démarrage de mon application et d'un script d'initialisation système, cela ne fonctionnait pas. Je l'ai corrigé en installant winston localement dans le répertoire de l'application (et en l'ajoutant à package.json).Pour moi, cela a fonctionné lorsqu'il est installé express localement avec l'option --save comme suit:
la source
Vérifiez si vous n'installez pas le
express
module, utilisez cette commande:et si votre
node_modules
répertoire est à un autre endroit, définissez laNODE_PATH
variable d'environnement:la source
Golo a bien expliqué la solution, mais je pourrais ajouter une précision:
parfois des modules de nœuds sont installés dans
et lorsque vous lancez le nœud, les modules blabla.js sont recherchés dans
Une solution est donc de créer un lien symbolique:
la source
Dans votre cas, votre
express
module est installé surC:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
, mais vous devez obtenir ce module dans le répertoire de votre projet. Donc , vous devez copier le fichier desexpress
dossiers du module deC:\Users\Dmitry\AppData\Roaming\npm\node_modules\
répertoire de votre projet:C:\ChatServer\Server\node_modules
. Si vous n'avez pas de dossier nommé 'node_modules' dans votre dossier de projet, créez-le d'abord et collez ces fichiers dans ce dossier. Cette méthode a fonctionné pour moi sur mon PC Windows. Redémarrez votre serveur de nœuds et exécutez à nouveau le nœud de commandeC:\ChatServer\Server>node server.js
. Cela devrait fonctionner maintenant !!!!la source
Sur le système d'exploitation basé sur Ubuntu, vous pouvez essayer
ça marche pour moi sur Mint
la source
Étant donné que vous avez installé le nœud sur votre système, installez Express localement pour votre projet en utilisant les éléments suivants pour Windows:
ou
Vous pouvez lui donner un accès global en utilisant:
la source
J'ai eu cette erreur dans vscode, bien que les modules aient été installés. J'utilise dactylographié et express. Dans les
server.ts
fichiers, toutes les importations avaient des soulignements ondulés rouges. Il s'avère que j'avais untsconfig.json
fichier défectueux .la source
créez un dossier sur votre disque dur, par exemple sample1 et accédez au type d'invite de commande: cd et donne le chemin du dossier sample1, puis installez tous les modules ...
puis tout ce que vous créez, enregistrez l'application dans le dossier sample1
essayez-le ...
la source
allez dans le répertoire de votre application et installez le module express en utilisant la commande ci-dessous npm install express --save puis listez tous les modules d'installation en utilisant la commande ci-dessous npm ls, vous verrez tous les modules installés localement.
la source
l'installation d'express globalement ne fonctionnera pas sur votre projet local, vous devez donc l'installer localement pour l'utiliser.
J'espère que cela fonctionnera
Je vous remercie
la source
J'ai rencontré le même problème. J'avais installé express globalement dans / usr / local / bin /. Quand je fais 'npm install', express n'a pas été créé dans node_modules du répertoire local.
la source
Cela a fonctionné pour moi sur MacOS X Sierra
la source
Je ne suis pas fier de partager cela, mais dans mon cas, j'avais:
la source
J'ai eu la même erreur en suivant l'exemple de ce livre: "Kubernetes Up & Running".
Je vois de nombreuses réponses suggérant d'installer express "à la main" mais je ne suis pas convaincu que ce soit la meilleure solution.
Parce que nous utilisons package.json (je peux le voir dans les journaux) et que la bonne façon de créer l'application est en cours d'exécution
npm install
, j'ai ajouté la dépendance express dans le fichier package.json .J'obtiens la version actuelle avec
npm search express
.la source