2012-08-13 13 views
21

Tengo la versión más reciente de node.js creada sin problemas. Estoy tratando de usar un módulo sqlite para node.js.Negarse a instalar sqlite3 como una dependencia de sí mismo

Para el nodo-sqlite3 por developmentseed, he seguido las instrucciones:

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

he instalado MNP: rizo -k https://npmjs.org/install.sh | sudo sh

e instalado nodo-gyp con la NGP: NGP sudo instalar -g nodo-gyp

Después de nodo-sqlite3 configure-d-d y hacer bien, he intentado instalar con NPM, consigo este :

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

Cuando investigué este error, me encontré con esta pregunta: npm install sqlite3 error así que trataron:

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

pero dio este mensaje:

/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 

Cuando traté de construir orlandov/node-sqlite, lo tengo desde git y luego intentado:

node-waf configure build 

pero me sale este error:

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

no puedo usar grumdrig/node-sqlite porque no admite el acceso asincrónico.

Gracias por cualquier sugerencia.

Respuesta

17

No es necesario para ejecutar

npm install sqlite3 

en la carpeta nodo-sqlite3. Al ejecutar este comando, intenta instalar sqlite3 como dependencia de sqlite3 (ya lo tiene).

Hay dos formas de instalar sqlite3:

Primero:

En su carpeta de proyecto ejecutará

npm install sqlite3 

Usted no necesita clonar proyecto Git antes. No es necesario configurarlo y hacerlo manualmente. Simplemente ejecute este comando en la carpeta de su proyecto donde desea usar el módulo sqlite3. Debería ver la carpeta node_modules/sqlite3 en su carpeta de proyectos después de finalizar npm. Ahora usted puede utilizar en su proyecto requiere:

var sqlite3 = require('sqlite3'); 

Segundo:

Utilice esta forma sólo si la NGP instala fall. (Paranormal).

  1. Vaya a la carpeta del proyecto.
  2. Crear carpeta node_modules si no existe.
  3. ejecutar:

    git clone git://github.com/developmentseed/node-sqlite3.git 
    cd node-sqlite3 
    ./configure 
    make 
    
  4. Ok. Ahora sqlite3 medio listo para usar. Necesitamos instalar dependencias. Ejecutar:

    npm install 
    

    Atención: NPM instalar sin otros parámetros. Este comando usa package.json en su carpeta sqlite3 para instalar dependencias.

Después del acabado npm puede utilizar el módulo sqlite3 en su proyecto.

+0

Tengo una carpeta project_node y adentro hay node-sqlite3 y node-v0.8.5 (última versión de node.js). ¿Nodo-sqlite3 necesita ir en el nodo-v0.8.5? Si pruebo npm instalo sqlite3 en node_project o en el nodo-v0.8.5, aparece este error: -bash: npm: comando no encontrado ¿Puede aclarar qué quiere decir con mi carpeta de proyecto? Gracias. – Dorothyy

+0

En su pregunta usted escribió que ya instaló npm y lo usa para instalar node-gyp. Ahora dices que npm no se encuentra. Muy extraño. ¿Qué sistema operativo usas? –

+0

Sí, es muy extraño, incluso cuando entro/node-sqlite3 donde lo había usado antes y trato de usar npm, dice comando no encontrado. Estoy usando Putty en Windows. – Dorothyy

7

Simplemente deje el directorio del módulo que desea instalar e intente instalarlo de nuevo. Esto funcionó para mí. Por lo tanto:

cd .. 
npm install sqlite3 
48

tengo este error cuando mi aplicación tenía el mismo nombre que uno de los paquetes que estuve (NPM) la instalación. Solo estaba haciendo práctica y no había pensado que necesitaba un nombre único para el proyecto ...

Simplemente cambie el name en su package.json a otra cosa y debería funcionar.

+1

Esto debe marcarse como respuesta :) –

1

Comprobar si el nombre de carpeta del proyecto es el mismo que el módulo que está intentando instalar,

Si intenta instalar expreso dentro de un proyecto de nombre de la carpeta expreso, obtendrá este error.

Cambiar el nombre de la carpeta del proyecto, su nombre de la carpeta del proyecto debe ser único en comparación con los nombres de los módulos NPM

también cambiar la entrada del archivo package.json

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

Este error se produce cuando el nombre del paquete es lo mismo que el paquete que vas a instalar.
Ir a package.json verificación de nombre de la propiedad init

{ 
name:"xxxx", 
... 
} 

Puede ser que le ayudará.

Cuestiones relacionadas