【问题标题】:Refusing to install sqlite3 as a dependency of itself拒绝将 sqlite3 安装为自身的依赖项
【发布时间】:2017-10-26 22:02:44
【问题描述】:

我有最新版本的 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 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,因为它不支持异步访问。

感谢您的任何建议。

【问题讨论】:

    标签: node.js sqlite npm


    【解决方案1】:

    当我的应用程序与我正在 (npm) 安装的软件包之一同名时,我收到此错误。我只是在做一些练习,没想到我需要一个唯一的项目名称......

    只需将package.json 中的name 更改为其他内容,它应该可以工作。

    【讨论】:

      【解决方案2】:

      你不需要执行

      npm install sqlite3
      

      在 node-sqlite3 文件夹中。通过执行此命令,您尝试将 sqlite3 安装为 sqlite3 的依赖项(您已经拥有它)。

      安装sqlite3有两种方式:

      第一:

      在你的项目文件夹中执行

      npm install sqlite3
      

      你不需要在它之前克隆 git 项目。不需要手动配置和制作。只需在要使用 sqlite3 模块的项目文件夹中执行此命令。 在 npm 完成后,您应该会在项目文件夹中看到文件夹 node_modules/sqlite3。 现在你可以通过 require 在你的项目中使用它了:

      var sqlite3 = require('sqlite3');
      

      第二:

      仅当 npm install 失败时才使用这种方式。 (超自然现象)。

      1. 转到您的项目文件夹。
      2. 如果不存在,则创建文件夹 node_modules。
      3. 执行:

        git clone git://github.com/developmentseed/node-sqlite3.git
        cd node-sqlite3
        ./configure
        make
        
      4. 好的。现在 sqlite3 可以使用一半了。我们需要安装依赖项。执行:

        npm install
        

        注意: npm install 不带其他参数。此命令使用您 sqlite3 文件夹中的 package.json 来安装依赖项。

      npm 完成后,您可以在项目中使用 sqlite3 模块。

      【讨论】:

      • 我有一个文件夹 project_node,里面有 node-sqlite3 和 node-v0.8.5(node.js 的最新版本)。 node-sqlite3 需要进入 node-v0.8.5 吗?如果我在 node_project 或 node-v0.8.5 中尝试 npm install sqlite3,我会收到此错误:-bash: npm: command not found 你能澄清一下我的项目文件夹是什么意思吗?谢谢。
      • 在您的问题中,您写道您已经安装了 npm 并将其用于安装 node-gyp。现在你说找不到 npm。很奇怪。您使用什么操作系统?
      • 是的,这很奇怪,即使我进入之前使用过的 /node-sqlite3 并尝试使用 npm,它仍然显示找不到命令。我在 Windows 上使用 Putty。
      • 我的意思是你通过putty连接的服务器操作系统。
      • 尝试按照以下说明重新安装 node.js 和 npm:github.com/joyent/node/wiki/…。在页面上找到“RHEL/CentOS/Scientific Linux 5 和 6”部分。这是官方的 Joyent 文档。
      【解决方案3】:

      只需离开您要安装的模块的目录,然后再次尝试安装即可。这对我有用。所以:

      cd ..
      npm install sqlite3
      

      【讨论】:

        【解决方案4】:

        检查您的项目文件夹名称是否与您尝试安装的模块相同

        如果您尝试在项目文件夹名称 express 中安装 express,您将收到此错误。

        重命名您的项目文件夹,与 npm 模块名称相比,您的项目文件夹名称应该是唯一的

        同时更改 package.json 文件条目

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

        【讨论】:

          【解决方案5】:

          当您的软件包名称与您要安装的软件包名称相同时会发生此错误。
          转至package.json 检查名称属性初始化

          {
          name:"xxxx",
          ...
          }
          

          也许会有所帮助。

          【讨论】:

            【解决方案6】:

            我猜在package.json文件中,项目的名字是sqlite3。因此,当您尝试安装它时,由于某些原因而被拒绝,因为它成为依赖项。所以尝试更改package.json中的项目名称并尝试一下。 如需进一步参考结帐:http://thisdavej.com/node-newbie-error-npm-refusing-to-install-package-as-a-dependency-of-itself/

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-01-31
              • 2020-07-04
              • 2015-11-20
              • 2021-01-02
              • 2021-04-21
              • 1970-01-01
              • 2012-10-04
              相关资源
              最近更新 更多