我有最新版本的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 | sudo 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 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 / 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,因为它不支持异步访问。
感谢您的任何建议。
答案 0 :(得分:52)
当我的应用程序与我安装的某个软件包(npm)同名时出现此错误。我只是做了一些练习,并没想到我需要一个独特的项目名称......
只需将name
中的package.json
更改为其他内容即可。
答案 1 :(得分:17)
您无需执行
npm install sqlite3
在node-sqlite3文件夹中。通过执行此命令,您尝试安装sqlite3作为sqlite3的依赖项(您已经拥有它)。
有两种方法可以安装sqlite3:
<强>首先强>
在项目文件夹中执行
npm install sqlite3
你不需要在它之前克隆git项目。不需要手动配置和制作。只需在要使用sqlite3模块的项目文件夹中执行此命令即可。 在npm完成后,您应该在项目文件夹中看到文件夹node_modules / sqlite3。 现在,您可以通过require在项目中使用它:
var sqlite3 = require('sqlite3');
<强>第二强>
仅当npm安装失败时才使用此方法。 (超自然)。
执行:
git clone git://github.com/developmentseed/node-sqlite3.git
cd node-sqlite3
./configure
make
确定。现在sqlite3半准备使用。我们需要安装依赖项。执行:
npm install
注意: npm install没有其他参数。此命令使用sqlite3文件夹中的package.json来安装依赖项。
完成npm后,您可以在项目中使用sqlite3模块。
答案 2 :(得分:7)
只需离开要安装的模块的目录,然后再次尝试安装。这对我有用。所以:
cd ..
npm install sqlite3
答案 3 :(得分:2)
检查您的项目文件夹名称是否与您尝试安装的模块相同,
如果您尝试在项目文件夹名称express中安装express,您将收到此错误。
重命名项目文件夹,项目文件夹名称与npm模块名称相比应该是唯一的
同时更改package.json文件条目
"name": "xxxxx",
"version": "1.0.0",
答案 4 :(得分:2)
如果您的包名与您要安装的包相同,则会出现此错误
转到package.json
检查名称属性init
{
name:"xxxx",
...
}
可能会有所帮助。
答案 5 :(得分:0)
我猜在package.json文件中,项目的名称是sqlite3。因此,当您尝试安装它时,由于某些原因它会拒绝,因为它变成了依赖。所以尝试在package.json中更改项目的名称并尝试一下。 如需进一步参考结帐:http://thisdavej.com/node-newbie-error-npm-refusing-to-install-package-as-a-dependency-of-itself/