27

事情就是这样。我的配置是 Ubuntu 13.04、Node.js v0.10.5 和 NPM 版本 1.2.18。

我正在尝试安装 node.js 模块“shoe”,但出现此错误:

marek@nassenfuss:/media/tc/examples/node/05.01$ sudo npm install
npm http GET https://registry.npmjs.org/shoe
npm http 304 https://registry.npmjs.org/shoe
npm http GET https://registry.npmjs.org/node-uuid/1.3.3
npm http GET https://registry.npmjs.org/faye-websocket/0.4.0
npm http GET https://registry.npmjs.org/rbytes/0.0.2
npm http 304 https://registry.npmjs.org/node-uuid/1.3.3
npm http 304 https://registry.npmjs.org/rbytes/0.0.2
npm http 304 https://registry.npmjs.org/faye-websocket/0.4.0

> rbytes@0.0.2 install /media/tc/examples/node/05.01/node_modules/shoe/node_modules/sockjs/node_modules/rbytes
> node-waf configure build

sh: 1: node-waf: not found
npm WARN optional dep failed, continuing rbytes@0.0.2
shoe@0.0.10 node_modules/shoe
├── sockjs-client@0.0.0-unreleasable
└── sockjs@0.3.1 (node-uuid@1.3.3, faye-websocket@0.4.0)
marek@nassenfuss:/media/tc/examples/node/05.01$

我在谷歌上搜索,发现 node-waf 被 node-gyp 替换了。我还发现 node-waf 可以安装

sudo apt-get install nodejs-dev

问题是我正在使用Chris Lea 的最新 node.js 包,它不再包含 dev。所以有两种方法可以解决这个问题。

首先,我可以安装 node-waf(从源代码?),但我不怎么安装。

其次,我可以(手动)修复模块,但我不知道。

我正在寻找任何解决方案。

4

5 回答 5

15

node-waf已被替换为node-gyp

使用以下命令安装 node-gyp: sudo npm install -g node-gyp

注意:要使用 node-gyp 构建,binding.gyp需要配置文件。例子:

{
  "targets": [
    {
      "target_name": "binding",
      "sources": [ "src/binding.cc" ]
    }
  ]
}
于 2013-12-01T09:31:58.237 回答
2

实际上是rbytes导致了这个问题。

让它变得更加复杂:rbytes不是直接依赖于shoe,而是sockjs. 并查看代码,它也应该可以正常工作rbytes

由于 shoe 声明是一个可选的依赖项,shoe所以会安装:

npm WARN optional dep failed, continuing rbytes@0.0.2
         ^^^^^^^^             ^^^^^^^^^^        

因此,无论警告如何,您都应该能够使用它。

于 2013-05-01T12:44:55.840 回答
2

我没有运气在我的机器上安装 node-waf,所以我决定分叉这个东西并将它迁移到 node-gyp 以便它工作。

我的叉子在https://github.com/eddydas/node-sleep

为了让它工作,首先确保你有 node-gyp

$ npm install node-gyp

然后,从 GitHub 克隆整个项目(通过 ZIP 或 Git,由您决定)并从中安装。

$ cd ~
$ wget "https://codeload.github.com/eddydas/node-sleep/zip/master"
$ unzip master
$ cd YOUR_NODE_JS_PROJECT_FOLDER
$ npm install ~/node-sleep-master

我尽我最大的努力让这件事发挥作用。如果它不顺利,请随时让我知道。希望能帮助到你!

于 2013-06-26T11:44:29.893 回答
1

我只是升级了我的节点版本(从 0.4.4 到 0.6.2),问题就解决了。

于 2014-03-13T12:25:12.570 回答
0

安装节点 lts 版本为我解决了这个问题

npm install n -g

sudo n lts
于 2021-05-03T15:57:11.243 回答