错误:"pre"无法安装版本的节点,请改用--nodedir标志 [英] Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
问题描述
我正在尝试为节点安装 opencv .我认为这与opencv没有直接关系,而是与node-gyp有关. 我在Mac上成功安装了opencv,但是当我尝试在Ubuntu服务器上执行完全相同的操作时,在执行"npm install opnecv"后出现以下错误:
I'm trying to install opencv for node. I don't think this has anything to do with opencv directly, rather it has to do with node-gyp. I had success in installing opencv on my mac but when I try to do the exact same on Ubuntu server I get the following error after doing 'npm install 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
我还尝试下载源代码并执行"node-gyp rebuild",结果类似:
I also tried downloading the source code and doing 'node-gyp rebuild' with similar results:
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
以前有人遇到过这个问题吗?
Has anyone had this issue before?
推荐答案
使用npm install --nodedir=/path/to/node opencv
,其中/path/to/node
是当前nodejs源代码的路径.
Use npm install --nodedir=/path/to/node opencv
, where /path/to/node
is a path to current nodejs source code.
发生这种情况是因为node-gyp找不到您的自定义版本的源,下面是有关它的讨论: https://github.com/TooTallNate/node-gyp/issues/86
It happens because node-gyp can't find source to your custom build, and here is the discussion about it: https://github.com/TooTallNate/node-gyp/issues/86
如果您具有超级用户权限,通常可以通过创建符号链接来解决此问题.
You can commonly fix this by creating a symbolic link if you have super user permissions.
chmod a+r /path/to/node -R
cd /usr/lib
sudo ln -s /path/to/node node
然后再次npm install
,它很可能会找到它.如果/usr/lib/node已经存在,请不要执行此操作,因为其他软件可能会依赖它.
Then npm install
again, and it will likely find it. Don't do this if /usr/lib/node already exists, as other software may depend on it.
这篇关于错误:"pre"无法安装版本的节点,请改用--nodedir标志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!