2012-08-13 12 views
21

Mam najnowszą wersję pliku node.js zbudowanego bez żadnych problemów. Próbuję użyć modułu sqlite dla node.js.Odmowa instalacji sqlite3 jako zależności od siebie

dla węzła-sqlite3 przez developmentseed, ja po kierunkach:

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

zainstalowałem NPM z: curl -k https://npmjs.org/install.sh | sudo sh

i zainstalowaniu węzła gyp z KMP: sudo npm zainstalować -g węzła gyp

Po węzeł-sqlite3 Configure-d i make-d porządku, próbowałem zainstalować z KMP, mam to :

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

Kiedy badałem ten błąd, znalazłem to pytanie: npm install sqlite3 error więc próbowałem:

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

ale mam ten błąd:

/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 

Kiedy próbowałem budować orlandov/node-SQLite, dostałem go z git, a następnie próbowałem:

node-waf configure build 

ale otrzymuję ten błąd:

/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' 

Nie mogę korzystać grumdrig/node-sqlite, ponieważ nie obsługuje dostępu asynchronicznego.

Dziękujemy za wszelkie sugestie.

Odpowiedz

17

Nie trzeba wykonać

npm install sqlite3 

w folderze węzłów sqlite3. Wykonując to polecenie, próbujesz zainstalować sqlite3 jako zależność sqlite3 (już ją masz).

Istnieją dwa sposoby, aby zainstalować sqlite3:

pierwszy:

w folderze projektu wykonać

npm install sqlite3 

Nie trzeba sklonować projekt git przed nim. Nie trzeba konfigurować i wykonywać ręcznie. Po prostu uruchom to polecenie w folderze projektu, w którym chcesz użyć modułu sqlite3. Powinieneś zobaczyć folder node_modules/sqlite3 w folderze projektu po zakończeniu npm. Teraz można go używać w projekcie przez wymagać:

var sqlite3 = require('sqlite3'); 

drugie:

skorzystać z tej drogi tylko jeśli npm instalacji nie powiedzie się. (Paranormalne).

  1. Przejdź do swojego folderu projektu.
  2. Utwórz folder node_modules, jeśli nie istnieje.
  3. Execute:

    git clone git://github.com/developmentseed/node-sqlite3.git 
    cd node-sqlite3 
    ./configure 
    make 
    
  4. Ok. Teraz sqlite3 jest w połowie gotowy do użycia. Musimy zainstalować zależności. Wykonanie:

    npm install 
    

    Uwaga: npm zainstalować bez innych parametrów. Ta komenda używa pliku package.json w folderze sqlite3 do instalowania zależności.

Po zakończeniu npm można użyć modułu sqlite3 w projekcie.

+0

Mam folder project_node, a wewnątrz znajduje się node-sqlite3 i node-v0.8.5 (najnowsza wersja node.js). Czy węzeł-sqlite3 musi przejść w węźle -0.0.5? Jeśli spróbuję npm install sqlite3 w node_project lub w node-v0.8.5, pojawia się ten błąd: -bash: npm: command not found Czy możesz wyjaśnić, co masz na myśli przez mój folder projektu? Dziękuję. – Dorothyy

+0

W pytaniu napisałeś, że już zainstalowałeś npm i użyjesz go do instalacji node-gyp. Teraz mówisz, że npm nie znaleziono. Bardzo dziwny. Z jakiego systemu operacyjnego korzystasz? –

+0

Tak, to jest bardzo dziwne, nawet kiedy wchodzę do/node-sqlite3, gdzie wcześniej go używałem i próbuję użyć npm, mówi polecenie nie znaleziono. Używam Putty w systemie Windows. – Dorothyy

7

Po prostu pozostaw katalog modułu, który chcesz zainstalować, i spróbuj go zainstalować ponownie. To działało dla mnie. A więc:

cd .. 
npm install sqlite3 
48

Ten błąd wystąpił, gdy moja aplikacja miała taką samą nazwę jak jeden z pakietów, które instalowałem (npm). Po prostu robię trochę praktyki i nie myślałem, że potrzebuję unikalnej nazwy dla projektu ...

Po prostu zmień name w swoim package.json na coś innego i powinno działać.

+1

To powinno być oznaczone jako odpowiedź :) –

1

Sprawdź, czy nazwa folderu projektu jest taka sama jak w module próbujesz zainstalować,

Jeśli spróbujesz zainstalować express wewnątrz Nazwa projektu folder Express, otrzymasz ten błąd.

Zmień nazwę folderu projektu, projekt Nazwa folderu powinna być unikalna w porównaniu z nazwami modułów npm

również zmienić wpis w pliku package.json

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

Ten błąd występuje, gdy swoją nazwę pakietu jest taki sam jak pakiet, który zamierzasz zainstalować.
idź do package.json sprawdzić właściwość name startowych

{ 
name:"xxxx", 
... 
} 

Może to pomoże.

Powiązane problemy