21

node.js の最新バージョンを問題なくビルドしました。node.js に sqlite モジュールを使用しようとしています。

developmentseed による node-sqlite3 の場合、次の指示に従いました。

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

次のコマンドで npm をインストールしました: curl -k https://npmjs.org/install.sh | 須藤sh

npmでnode-gypをインストールしました:sudo npm install -g node-gyp

node-sqlite3 configure-d と make-d が正常に機能した後、npm でインストールしようとすると、次のようになります。

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

このエラーを調査したところ、次の質問が見つかりました: npm install sqlite3 エラーなので、試しました:

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

しかし、このエラーが発生しました:

/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

orlandov/node-sqlite をビルドしようとしたときに、git から取得して、次のことを試しました。

node-waf configure build

しかし、私はこのエラーが発生します:

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

grumdrig/node-sqlite は非同期アクセスに対応していないので使えません。

ご提案ありがとうございます。

4

6 に答える 6

52

アプリが (npm) インストール中のパッケージの 1 つと同じ名前を持っていたときに、このエラーが発生しました。私はちょうどいくつかの練習をしていたので、プロジェクトに一意の名前が必要だとは思っていませんでした...

を別のものに変更するだけnameで機能するはずです。package.json

于 2014-08-25T09:54:37.643 に答える
17

実行する必要はありません

npm install sqlite3

node-sqlite3 フォルダーにあります。このコマンドを実行すると、sqlite3 の依存関係として sqlite3 をインストールしようとします (既に持っています)。

sqlite3 をインストールするには、次の 2 つの方法があります。

初め:

プロジェクトフォルダーで実行します

npm install sqlite3

その前に git プロジェクトを複製する必要はありません。手動で構成して作成する必要はありません。sqlite3 モジュールを使用するプロジェクト フォルダーでこのコマンドを実行するだけです。npm の終了後、プロジェクト フォルダーにフォルダー node_modules/sqlite3 が表示されます。これで、require によってプロジェクトで使用できるようになりました。

var sqlite3 = require('sqlite3');

2番:

この方法は、npm のインストールが失敗した場合にのみ使用してください。(超常現象)。

  1. プロジェクト フォルダーに移動します。
  2. 存在しない場合は、フォルダー node_modules を作成します。
  3. 実行する:

    git clone git://github.com/developmentseed/node-sqlite3.git
    cd node-sqlite3
    ./configure
    make
    
  4. Ok。これで sqlite3 は半分使用できる状態になりました。依存関係をインストールする必要があります。実行する:

    npm install
    

    注意:他のパラメーターを指定せずに npm install を実行します。このコマンドは、sqlite3 フォルダーの package.json を使用して依存関係をインストールします。

npm が完了したら、プロジェクトで sqlite3 モジュールを使用できます。

于 2012-08-13T20:14:59.243 に答える
7

インストールしたいモジュールのディレクトリを離れて、もう一度インストールしてみてください。これは私にとってはうまくいきました。そう:

cd ..
npm install sqlite3
于 2012-09-03T11:14:41.817 に答える
0

package.json ファイルでは、プロジェクトの名前は sqlite3 だと思います。したがって、インストールしようとすると、依存関係になると述べたいくつかの理由で拒否されます。そのため、package.json のプロジェクトの名前を変更して、試してみてください。詳細な参照チェックアウト: http://thisdavej.com/node-newbie-error-npm-refusing-to-install-package-as-a-dependency-of-itself/

于 2017-10-26T14:02:44.513 に答える