2013-08-15 11 views
22

Come per il manuale di istruzioni del nodo js, ​​è altamente sconsigliato installare qualsiasi modulo di nodo globalmente.Come richiedere il modulo Node nel REPL del nodo senza installarlo globalmente?

Ho provato una varietà di cose. Ho eseguito i seguenti comandi nella mia directory home, nella mia cartella git (con la cartella node_modules) e nella vera cartella node_modules.

> 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) 

Si noti che in precedenza, mi aspettavo che fossero nella mia cartella git (con node_modules). Ho trovato curioso che la linea

> var express=require('express'); 

ceduta

undefined 

nella home directory, ho appena ottengo lo stesso errore "non può trovare il modulo".

+0

Se si esegue 'which express' in terminal qual è il tuo output? – sbarow

risposta

24

La sua dichiarazione require sta lavorando. Ignora il undefined, è solo il nodo REPL. Il numero undefined viene spiegato here e vedere i commenti seguenti per i collegamenti a materiale aggiuntivo.

È possibile verificare con:

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

Grazie! Perché stampa indefinito però? – user2316667

+1

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

+2

E qui per una discussione ECMA-262: [assigment in javascript e la parola chiave var] (http://stackoverflow.com/questions/13180195/assigment-in- javascript-and-the-var-keyword/13180929 # 13180929) – dc5

4

La stampa undefined è un comportamento normale sia per la console del browser che per il nodo repl.

Prova a digitare: espresso. (Tasto tab) - si dovrebbe ottenere qualcosa di simile:

bene
> 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

Lo apprezzo. Ho provato espresso. (premuto tasto tab) ma ha ottenuto 3 punti. Ma "esprimere" produce una lista gigantesca di cose. – user2316667

+0

Interessante - quale versione di nodo e sistema operativo? – dc5

+0

Ubuntu e v0.10.12 – user2316667

1

A seconda del terminale/Shell si può decidere di specificare la directory corrente. Attualmente sto usando gitbash.

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

Quando faccio questo l'oggetto viene restituito.

node repl require example

io sono curioso di sapere se questo funziona per gli altri, ha funzionato per me.

+0

Grazie, ha lavorato per me, ma potrei semplicemente usare ./node_modules/underscore senza dire del file js quando la cartella ha package.json – Lostfields

Problemi correlati