2012-08-13 12 views
21

Ho la versione più recente di node.js costruita senza problemi. Sto cercando di usare un modulo sqlite per node.js.Rifiutarsi di installare sqlite3 come dipendenza di sé

Per il nodo-sqlite3 da developmentseed, ho seguito le direzioni:

git clone git://github.com/developmentseed/node-sqlite3.git 
cd node-sqlite3 
./configure 
make 

ho installato NPM con: ricciolo -k https://npmjs.org/install.sh | sudo sh

e installato il nodo-gyp con NPM: sudo NPM installare -g nodo-gyp

Dopo nodo-sqlite3 configure-D e make-D va bene, ho provato ad installare con NPM, ottengo questo :

npm install sqlite3 
npm WARN install Refusing to install sqlite3 as a dependency of itself 

Quando ho studiato questo errore, ho trovato questa domanda: npm install sqlite3 error così ho provato:

node-waf clean || true; node-waf configure build 

ma ottenuto questo errore:

/usr/local/bin/../lib/node/wafadmin/Utils.py:136: DeprecationWarning: the md5 module is deprecated; use hashlib instead 
from md5 import md5 
Waf: Please run waf from a directory containing a file named "wscript" or run distclean 
/usr/local/bin/../lib/node/wafadmin/Utils.py:136: DeprecationWarning: the md5 module is deprecated; use hashlib instead 
from md5 import md5 
arg[0] directory does not contain a wscript file 

Quando ho cercato di costruire orlandov/node-SQLite, l'ho presa da git e poi provato:

node-waf configure build 

ma ottengo questo errore:

/usr/local/bin/../lib/node/wafadmin/Utils.py:136: DeprecationWarning: the md5 module is 
deprecated; use hashlib instead 
from md5 import md5 
Checking for program g++ or c++   : /usr/bin/g++ 
Checking for program cpp     : /usr/bin/cpp 
Checking for program ar     : /nnmc/cvsbin/ar 
Checking for program ranlib    : /usr/bin/ranlib 
Checking for g++       : ok 
Checking for program gcc or cc   : cc 
Checking for gcc       : ok 
Checking for node path     : not found 
Checking for node prefix     : ok /usr/local 
'configure' finished successfully (0.070s) 
Waf: Entering directory `/U1/dorothyy/project_node/node-sqlite/build' 
/U1/dorothyy/project_node/node-sqlite/deps/mpool-2.1.0 
make: Nothing to be done for `all'. 
Waf: Leaving directory `/U1/dorothyy/project_node/node-sqlite/build' 
Traceback (most recent call last): 
File "/usr/local/bin/node-waf", line 16, in <module> 
Scripting.prepare(t, os.getcwd(), VERSION, wafdir) 
File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 145, in prepare 
prepare_impl(t, cwd, ver, wafdir) 
File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 135, in prepare_impl 
main() 
File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 188, in main 
fun(ctx) 
File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 386, in build 
return build_impl(bld) 
File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 405, in build_impl 
bld.compile() 
File "/usr/local/bin/../lib/node/wafadmin/Build.py", line 255, in compile 
self.flush() 
File "/usr/local/bin/../lib/node/wafadmin/Build.py", line 717, in flush 
tg.post() 
File "/usr/local/bin/../lib/node/wafadmin/TaskGen.py", line 219, in post 
self.apply() 
File "/usr/local/bin/../lib/node/wafadmin/TaskGen.py", line 206, in apply 
v() 
File "/usr/local/bin/../lib/node/wafadmin/TaskGen.py", line 464, in apply_core 
node = find_resource(filename) 
File "/usr/local/bin/../lib/node/wafadmin/Node.py", line 183, in find_resource 
st = Utils.h_file(path) 
AttributeError: 'module' object has no attribute 'h_file' 

non posso usare grumdrig/node-sqlite perché non supporta l'accesso asincrono.

Grazie per eventuali suggerimenti.

risposta

17

Non è necessario eseguire

npm install sqlite3 

nella cartella nodo-sqlite3. Eseguendo questo comando si sta tentando di installare sqlite3 come dipendenza di sqlite3 (l'hai già).

ci sono per installare sqlite3 due modi:

Prime:

nella cartella del progetto eseguire

npm install sqlite3 

Non avete bisogno di clonare progetto Git prima di esso. Non è necessario configurarlo e farlo manualmente. Basta eseguire questo comando nella cartella del progetto in cui si desidera utilizzare il modulo sqlite3. Si dovrebbe vedere la cartella node_modules/sqlite3 nella cartella del progetto dopo la fine di npm. Ora è possibile utilizzare nel vostro progetto richiede:

var sqlite3 = require('sqlite3'); 

Secondo:

Utilizzare questo modo solo se NPM installazione fallisce. (Paranormale).

  1. Passare alla cartella del progetto.
  2. Crea la cartella node_modules se non esiste.
  3. Execute:

    git clone git://github.com/developmentseed/node-sqlite3.git 
    cd node-sqlite3 
    ./configure 
    make 
    
  4. Ok. Ora sqlite3 mezzo pronto per l'uso. Dobbiamo installare le dipendenze. Esegui:

    npm install 
    

    Attenzione: NPM installare senza altri parametri. Questo comando usa package.json nella cartella sqlite3 per installare le dipendenze.

Dopo il completamento di npm è possibile utilizzare il modulo sqlite3 nel progetto.

+0

Ho una cartella project_node e al suo interno c'è node-sqlite3 e node-v0.8.5 (versione più recente di node.js). Node-sqlite3 deve andare nel nodo-v0.8.5? Se provo npm installa sqlite3 in node_project o in node-v0.8.5, ottengo questo errore: -bash: npm: comando non trovato Puoi chiarire cosa intendi per cartella del mio progetto? Grazie. – Dorothyy

+0

Nella tua domanda hai scritto di installare già npm e usarlo per installare node-gyp. Ora tu dici che npm non trovato. Molto strano. Quale sistema operativo usi? –

+0

Sì, è molto strano, anche quando vado in/node-sqlite3 dove l'ho usato prima e provo a usare npm, dice comando non trovato. Sto usando Putty su Windows. – Dorothyy

7

Lasciare semplicemente la directory del modulo che si desidera installare e provare ad installarlo di nuovo. Questo ha funzionato per me. Quindi:

cd .. 
npm install sqlite3 
48

ho ottenuto questo errore, quando la mia app aveva lo stesso nome di uno dei pacchetti ero (NPM) installazione. Stavo solo facendo un po 'di pratica e non avevo pensato di aver bisogno di un nome univoco per il progetto ...

Basta cambiare il name nel tuo package.json in qualcos'altro e dovrebbe funzionare.

+1

Questo dovrebbe essere contrassegnato come risposta :) –

1

Verificare se il nome della cartella di progetto è la stessa del modulo che si sta tentando di installare,

Se si tenta di installare espressa all'interno di un progetto di nome della cartella espresso, si otterrà questo errore.

Rinomina cartella del progetto, il nome della cartella di progetto deve essere univoco rispetto ai nomi dei moduli NPM

Anche cambiare la voce del file package.json

"name": "xxxxx", 
    "version": "1.0.0", 
1

Questo errore si verifica quando il nome del pacchetto è uguale al pacchetto che stai per installare.
Vai package.json controllo nome della proprietà di init

{ 
name:"xxxx", 
... 
} 

Può essere che vi aiuterà.

Problemi correlati