web-dev-qa-db-fra.com

Refuser d'installer sqlite3 en tant que dépendance d'elle-même

J'ai la version la plus récente de node.js construite sans aucun problème. J'essaie d'utiliser un module sqlite pour node.js. 

Pour node-sqlite3 de developmentseed, j'ai suivi les instructions:

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

J'ai installé npm avec: curl -k https://npmjs.org/install.sh | Sudo sh

et installé node-gyp avec npm: Sudo npm installer -g node-gyp

Après node-sqlite3 configure-d et make-d d'accord, j'ai essayé d'installer avec npm, je comprends ceci: 

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

Lorsque j'ai recherché cette erreur, j'ai trouvé cette question: npm install sqlite3 error alors j'ai essayé:

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

mais j'ai eu cette erreur:

/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

Quand j'ai essayé de construire orlandov/node-sqlite, je l'ai obtenu de git puis j'ai essayé:

node-waf configure build

mais j'obtiens cette erreur: 

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

Je ne peux pas utiliser grumdrig/node-sqlite car il ne prend pas en charge l'accès asynchrone. 

Merci pour vos suggestions. 

21
Dorothyy

Vous n'avez pas besoin d'exécuter 

npm install sqlite3

dans le dossier node-sqlite3. En exécutant cette commande, vous essayez d'installer sqlite3 en tant que dépendance de sqlite3 (vous l'avez déjà).

Il y a deux façons d'installer sqlite3:

Premier:

Dans votre dossier de projet, exécutez

npm install sqlite3

Vous n'avez pas besoin de cloner le projet git avant. Pas besoin de le configurer et de le faire manuellement. Exécutez simplement cette commande dans le dossier de votre projet où vous souhaitez utiliser le module sqlite3 . Vous devriez voir le dossier node_modules/sqlite3 dans votre dossier de projet après la fin de npm . Vous pouvez maintenant l'utiliser dans votre projet en demandant

var sqlite3 = require('sqlite3');

Seconde:

Utilisez cette méthode uniquement si l'installation de npm échoue. (Paranormal).

  1. Allez dans votre dossier de projet.
  2. Créez le dossier node_modules s'il n'existe pas.
  3. Exécuter:

    git clone git://github.com/developmentseed/node-sqlite3.git
    cd node-sqlite3
    ./configure
    make
    
  4. D'accord. Maintenant, sqlite3 est à moitié prêt à être utilisé. Nous devons installer des dépendances. Exécuter:

    npm install
    

    Attention: npm installez sans autres paramètres. Cette commande utilise package.json dans votre dossier sqlite3 pour installer des dépendances.

Une fois que npm est terminé, vous pouvez utiliser le module sqlite3 dans votre projet.

17
Vadim Baryshev

J'ai eu cette erreur lorsque mon application avait le même nom que l'un des packages que j'installais (npm). Je faisais juste un peu de pratique et je n'avais pas pensé que j'avais besoin d'un nom unique pour le projet ...

Remplacez simplement la name de votre package.json par autre chose et cela devrait fonctionner.

51
Simon H

Laissez simplement le répertoire du module que vous souhaitez installer et essayez de l'installer à nouveau. Cela a fonctionné pour moi. Alors:

cd ..
npm install sqlite3
7
marcinsdance

Vérifiez si le nom du dossier de votre projet est identique à celui du module que vous essayez d'installer ,

Si vous essayez d'installer express dans un nom de dossier de projet express, vous obtiendrez cette erreur.

Renommez votre dossier de projet. Le nom de votre dossier de projet doit être unique par rapport aux noms de module npm.

Modifiez également l'entrée du fichier package.json.

 "name": "xxxxx",
  "version": "1.0.0",
2
Ignatius Andrew

Cette erreur se produit lorsque le nom de votre paquet est identique à celui du paquet que vous allez installer.
Aller au package.json Vérifier le nom de la propriété init 

{
name:"xxxx",
...
}

Peut-être que ça va aider.

2
Naveen Gupta

Je suppose que dans le fichier package.json, le nom du projet est sqlite3. Ainsi, lorsque vous essayez d'installer, il le rejette pour des raisons telles que celle-ci devient une dépendance. Essayez donc de changer le nom du projet dans package.json et essayez-le. Pour plus de vérification des références: http://thisdavej.com/node-newbie-error-npm-refusing-tourneau-install-package-as-a-dependency-of-itself/

0
Dalchand Kumawat