2013-08-15 3 views
22

Conformément au manuel d'instructions du noeud js, il est fortement déconseillé d'installer un module de noeud globalement.Comment faire pour exiger le module de noeud dans le REPL de noeud sans installer globalement?

J'ai essayé une variété de choses. J'ai exécuté les commandes suivantes dans mon répertoire personnel, dans mon dossier git (avec le dossier node_modules) et dans le dossier node_modules actuel.

> var express=require('express'); 
undefined 
> var express=require('node_modules/express'); 
Error: Cannot find module 'node_modules/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 repl:1:13 
    at REPLServer.self.eval (repl.js:110:21) 
    at repl.js:249:20 
    at REPLServer.self.eval (repl.js:122:7) 
    at Interface.<anonymous> (repl.js:239:12) 
    at Interface.EventEmitter.emit (events.js:95:17) 

Notez que dans ce qui précède, je les attendais dans mon dossier git (avec node_modules). Je l'ai trouvé curieux que la ligne

> var express=require('express'); 

a abouti

undefined 

Dans le répertoire, je viens d'obtenir la même erreur « ne peut pas trouver module ».

+0

Si vous exécutez 'which express' dans le terminal quelle est votre sortie? – sbarow

Répondre

24

Votre déclaration require fonctionne bien. Ignorer le undefined, c'est juste le noeud REPL. Le undefined est expliqué here, et voir les commentaires ci-dessous pour des liens vers des documents supplémentaires à ce sujet.

Vous pouvez vérifier avec:

mkdir /tmp/test-repl 
cd /tmp/test-repl 
npm install express 
node 
> var express = require('express'); 
undefined 
> express 
//long object which is the express module gets printed 
+0

Merci! Pourquoi imprime-t-il non défini cependant? – user2316667

+1

http://stackoverflow.com/a/10188087/266795 –

+2

Et ici pour une discussion ECMA-262: [assigment en javascript et le mot-clé var] (http://stackoverflow.com/questions/13180195/assigment-in- javascript-and-the-var-keyword/13180929 # 13180929) – dc5

4

impression undefined est un comportement normal pour à la fois la console de navigateur et le noeud repl.

Essayez de taper: express. (Touche de tabulation) - vous devriez obtenir quelque chose comme ceci:

> var express = require('express'); 
undefined 
> express. 
express.__defineGetter__  express.__defineSetter__  express.__lookupGetter__  express.__lookupSetter__  express.constructor   express.hasOwnProperty 
express.isPrototypeOf   express.propertyIsEnumerable express.toLocaleString  express.toString    express.valueOf    

express.apply     express.arguments    express.bind     express.call     express.caller    express.constructor 
express.length    express.name     express.toString    

express.Route     express.Router    express.application   express.arguments    express.basicAuth    express.bodyParser 
express.caller    express.compress    express.cookieParser   express.cookieSession   express.createServer   express.csrf 
express.directory    express.errorHandler   express.favicon    express.json     express.length    express.limit 
express.logger    express.methodOverride  express.mime     express.multipart    express.name     express.prototype 
express.query     express.request    express.response    express.responseTime   express.session    express.static 
express.staticCache   express.timeout    express.urlencoded   express.version    express.vhost 
+0

Je l'apprécie. J'ai essayé express. (appuyez sur la touche de tabulation), mais a obtenu 3 points. Mais 'express' donne une liste géante de choses. – user2316667

+0

Intéressant - quelle version du nœud et du système d'exploitation? – dc5

+0

Ubuntu et v0.10.12 – user2316667

1

En fonction du terminal/shell, il peut vous demander de spécifier le répertoire courant. J'utilise gitbash pour le moment.

_u = require('./node_modules/underscore/underscore'); 

Lorsque je fais cela, l'objet est retourné.

node repl require example

Je suis curieux de savoir si cela fonctionne pour les autres, cela a fonctionné pour moi.

+0

Merci, travaillé pour moi, mais je pourrais juste utiliser ./node_modules/underscore sans parler du fichier js lorsque le dossier a package.json – Lostfields

Questions connexes