Node.js 错误:";前";无法安装节点的版本,请改用--nodedir标志

Node.js 错误:";前";无法安装节点的版本,请改用--nodedir标志,node.js,opencv,npm,Node.js,Opencv,Npm,我正在尝试为节点安装。我不认为这与opencv有任何直接关系,而是与节点gyp有关。 我在mac上成功地安装了opencv,但当我在Ubuntu服务器上尝试同样的操作时,在执行“npm安装opnecv”后,我出现了以下错误: npm http GET https://registry.npmjs.org/opencv npm http 304 https://registry.npmjs.org/opencv > opencv@0.0.7 preinstall /home/demo/no

我正在尝试为节点安装。我不认为这与opencv有任何直接关系,而是与节点gyp有关。 我在mac上成功地安装了opencv,但当我在Ubuntu服务器上尝试同样的操作时,在执行“npm安装opnecv”后,我出现了以下错误:

npm http GET https://registry.npmjs.org/opencv
npm http 304 https://registry.npmjs.org/opencv

> opencv@0.0.7 preinstall /home/demo/node_modules/opencv
> node-gyp rebuild

gyp ERR! configure error 
gyp ERR! stack Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
gyp ERR! stack     at install (/usr/local/lib/node_modules/node-gyp/lib/install.js:69:16)
gyp ERR! stack     at Object.commands.forEach.self.commands.(anonymous function) [as install] (/usr/local/lib/node_modules/node-gyp/lib/node-gyp.js:56:37)
gyp ERR! stack     at getNodeDir (/usr/local/lib/node_modules/node-gyp/lib/configure.js:181:20)
gyp ERR! stack     at /usr/local/lib/node_modules/node-gyp/lib/configure.js:101:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:538:7)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:96:17)
gyp ERR! stack     at maybeClose (child_process.js:638:16)
gyp ERR! stack     at Process._handle.onexit (child_process.js:680:5)
gyp ERR! System Linux 3.2.0-29-generic
gyp ERR! command "node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/demo/node_modules/opencv
gyp ERR! node -v v0.8.13-pre
gyp ERR! node-gyp -v v0.7.1
gyp ERR! not ok 
npm ERR! opencv@0.0.7 preinstall: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR! 
npm ERR! Failed at the opencv@0.0.7 preinstall script.
npm ERR! This is most likely a problem with the opencv package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls opencv
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.2.0-29-generic
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "opencv"
npm ERR! cwd /home/demo
npm ERR! node -v v0.8.13-pre
npm ERR! npm -v 1.1.63
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/demo/npm-debug.log
npm ERR! not ok code 0
我还尝试下载源代码并执行“节点gyp重建”,结果类似:

demo@camera:~/src/node$ node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@0.7.1
gyp info using node@0.8.13-pre | linux | x64
gyp ERR! configure error 
gyp ERR! stack Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
gyp ERR! stack     at install (/usr/local/lib/node_modules/node-gyp/lib/install.js:69:16)
gyp ERR! stack     at Object.commands.forEach.self.commands.(anonymous function) [as install] (/usr/local/lib/node_modules/node-gyp/lib/node-gyp.js:56:37)
gyp ERR! stack     at getNodeDir (/usr/local/lib/node_modules/node-gyp/lib/configure.js:181:20)
gyp ERR! stack     at /usr/local/lib/node_modules/node-gyp/lib/configure.js:101:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:538:7)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:96:17)
gyp ERR! stack     at maybeClose (child_process.js:638:16)
gyp ERR! stack     at Process._handle.onexit (child_process.js:680:5)
gyp ERR! System Linux 3.2.0-29-generic
gyp ERR! command "node" "/usr/local/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/demo/src/node
gyp ERR! node -v v0.8.13-pre
gyp ERR! node-gyp -v v0.7.1
gyp ERR! not ok 
以前有人遇到过这个问题吗?

使用
npm安装--nodedir=/path/to/node opencv
,其中
/path/to/node
是指向当前nodejs源代码的路径

之所以会发生这种情况,是因为node gyp无法找到自定义生成的源代码,下面是关于它的讨论:

如果您拥有超级用户权限,通常可以通过创建符号链接来解决此问题

chmod a+r /path/to/node -R
cd /usr/lib
sudo ln -s /path/to/node node

然后再次安装npm,它很可能会找到它。如果/usr/lib/node已经存在,请不要执行此操作,因为其他软件可能依赖于它。

我还可以通过将node的版本升级到稳定版本(例如,不是“pre”版本-您的版本是
0.8.13-pre
)来解决此问题,方法如下:

sudo npm install -g n # install node version manager "n"
sudo n stable # install the latest stable version of node

顺便说一句,你为什么使用Node.js 0.8.13而不是稳定的版本0.8.12?哎呀,这不是我的本意。我将切换到0.8.12。对于我的macbook,它不允许在最后使用递归标志。我需要使用chmod-ra+R$NODE\u SRC\u DIR。OSX的文件夹也应该是/usr/local/lib