2012-08-13 65 views
21

我有沒有問題構建的最新版本的node.js。我正在嘗試爲node.js使用sqlite模塊。拒絕安裝sqlite3作爲自身的依賴關係

對於由developmentseed節點sqlite3的,我跟着方向:

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

我安裝NPM: 捲曲-k https://npmjs.org/install.sh |須藤SH

和安裝節點GYP與NPM: 須藤NPM安裝-g節點GYP

後節點sqlite3的配置-d,使-d沒關係,我試圖與故宮安裝,我得到這個:

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

當我研究這個錯誤,我發現這個問題:npm install sqlite3 error所以我嘗試:

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 /節點sqlite的,我是從混帳得到它,然後嘗試:

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,因爲它不支持異步訪問。

謝謝你的任何建議。

回答

17

你不需要在節點sqlite3的文件夾執行

npm install sqlite3 

。通過執行這個命令,你試圖安裝sqlite3作爲sqlite3的依賴(你已經擁有了它)。

有兩種方法來安裝的sqlite3:

第一:

在項目文件夾執行

npm install sqlite3 

你不需要在它之前克隆Git項目。不需要手動配置和製作。只需在要使用sqlite3模塊的項目文件夾中執行此命令即可。 在npm結束後,您應該在項目文件夾中看到文件夾node_modules/sqlite3。 現在,您可以通過要求使用在您的項目:

var sqlite3 = require('sqlite3'); 

二:只有在NPM安裝失敗

使用這種方式。 (超自然)。

  1. 轉到您的項目文件夾。
  2. 如果不存在,則創建文件夾node_modules。
  3. 執行:

    git clone git://github.com/developmentseed/node-sqlite3.git 
    cd node-sqlite3 
    ./configure 
    make 
    
  4. 確定。現在sqlite3已經準備好了。我們需要安裝依賴關係。執行:

    npm install 
    

    注意: NPM無需安裝其它參數。這個命令在sqlite3文件夾中使用package.json來安裝依賴關係。

npm完成後,您可以在您的項目中使用sqlite3模塊。

+0

我有一個文件夾project_node和裏面有node-sqlite3和node-v0.8.5(最新版本的node.js)。 node-sqlite3是否需要進入node-v0.8.5? 如果我嘗試npm安裝sqlite3在node_project或node-v0.8.5,我得到這個錯誤: -bash:npm:命令沒有找到 你能說清楚你的意思是我的項目文件夾? 謝謝。 – Dorothyy 2012-08-13 21:00:07

+0

在你的問題中,你寫道你已經安裝npm並將其用於安裝node-gyp。現在你說npm沒找到。很奇怪。你使用什麼操作系統? – 2012-08-13 21:04:25

+0

是的,這很奇怪,即使我進入/ node-sqlite3之前我曾經使用它並嘗試使用npm,它說沒有找到命令。我在Windows上使用Putty。 – Dorothyy 2012-08-13 21:07:38

7

只需離開您想要安裝的模塊的目錄並嘗試再次安裝它。這對我有效。所以:

​​
48

當我的應用程序有同樣的名字,因爲我是(NPM)安裝的軟件包之一,我得到這個錯誤。我只是做了一些練習,並沒有想到我需要一個獨特的名稱爲該項目...

只需將package.jsonname更改爲其他內容,它應該工作。

+1

這應該被標記爲回答:) – 2017-05-21 20:29:17

1

檢查項目文件夾的名字是一樣的模塊,你要安裝

如果您嘗試安裝項目文件夾名快遞快件裏面,你會得到這個錯誤。

重命名項目文件夾,項目文件夾名稱應該比NPM模塊名稱

而且改變的package.json文件條目

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

出現此錯誤是唯一的,當你的包名與您要安裝的軟件包相同。
轉到package.json 檢查name屬性初始化

{ 
name:"xxxx", 
... 
} 

可能會有所幫助。