错误:无法安装节点的“pre”版本,请改用–nodedir标志

我正在尝试为节点安装opencv 。 我不认为这与opencv直接有什么关系,而是与node-gyp有关。 我成功地在我的Mac上安装opencv,但是当我尝试在Ubuntu服务器上完全相同时,在执行'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重build”:

 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 install --nodedir=/path/to/node opencv ,其中/path/to/node是当前nodejs源代码的path。

发生这种情况是因为node-gyp无法find自定义构build的源代码,下面是关于它的讨论: https : //github.com/TooTallNate/node-gyp/issues/86

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

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

然后npm install再次npm install ,它可能会find它。 如果/ usr / lib /节点已经存在,不要这样做,因为其他软件可能依赖它。

我也可以通过将我的节点版本升级到一个稳定的版本(例如不是“pre”版本 – 你的版本是0.8.13-pre )来解决这个问题。

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