1

我正在尝试更新我的 socket.io 版本(当前为 0.9.11),因此我将 package.json 文件编辑为:

{
  "name": "aaa",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "app.js"
  },
  "dependencies": {
    "express": "3.0.3",
    "hjs": "0.0.4",
    "cradle": "0.6.4",
    "socket.io": "0.9.14"
  },
  "subdomain": "aaa",
  "engines": {
    "node": "0.6.x"
  }
}

我收到以下奇怪的错误:

gyp ERR! configure error 
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:113:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:81:11
gyp ERR! stack     at Object.oncomplete (fs.js:107:15)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\apps\sms - part 2\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws
gyp ERR! node -v v0.10.3
gyp ERR! node-gyp -v v0.9.5
gyp ERR! not ok 

所以我有三个问题:

  1. 在成功运行我的 node.js 服务器之前,我是如何设法安装 socket.io 的?

  2. Python 与此有何关系?我的 PC 上没有 Python,我不知道我应该有。

  3. 如何解决这个问题?

已编辑 只是忘了提到 socket.io 模块没有得到更新并保持在 0.9.11 版本

4

1 回答 1

0

node-gyp编译本机插件需要 Python 。

一个例子是ws,它socket.io-client取决于:

cwd ...\node_modules\socket.io\node_modules\socket.io-client\node_modules\ws

而且,它之前安装的原因可能在ws. 该项目指定了一个"scripts": { "install": "..." }允许在安装时编译失败的情况。这两个似乎都已被删除(至少是 v0.4.19)。


一种可用的修复方法是安装node-gyp的依赖项,包括 Python。这可能是最好的,因为它可以让您及时了解错误修复。

另一种方法是指定一个较低版本的ws,它仍然socket.io-client的 dependencies兼容,方法是将其添加到您的package.json:

"dependencies": {
    "express": "3.0.3",
    "hjs": "0.0.4",
    "cradle": "0.6.4",
    "socket.io": "0.9.14",
    "ws": "0.4.19"
}
于 2013-04-21T09:04:50.837 回答