node-gyp rebuild在Windows 7上安装stanford-corenlp失败

时间:2015-02-15 20:47:13

标签: node.js stanford-nlp node-gyp

有很多类似的主题,我在本周末彻底解决了这个问题,其中没有一个包含我的问题的答案。

通过调用

安装节点包stanford-corenlp
npm install stanford-corenlp

在我的Windows 7计算机上失败,错误输出包含

npm ERR! Failed at the java@0.2.9 install script 'node-gyp rebuild'.

显示的第一个错误是:

child_process: customFds option is deprecated, use stdio instead.

此错误后面会出现一些警告,然后是数百个错误:

f:\appdata\roaming\npm\node_modules\stanford-corenlp\node_modules\java\src\java.h(10): error C2039: 'ObjectWrap' : is not a member of 'node' (..\src\java.cpp) [f:\AppData\Roaming\npm\node_modules\stanford-corenlp\node_modules\java\build\nodejavabridge_bindings.vcxproj]
f:\appdata\roaming\npm\node_modules\stanford-corenlp\node_modules\java\src\java.h(10): error C2504: 'ObjectWrap' : base class undefined (..\src\java.cpp) [f:\AppData\Roaming\npm\node_modules\stanford-corenlp\node_modules\java\build\nodejavabridge_bindings.vcxproj]
f:\appdata\roaming\npm\node_modules\stanford-corenlp\node_modules\java\src\java.h(23): error C2039: 'Arguments' : is not a member of 'v8' (..\src\java.cpp) [f:\AppData\Roaming\npm\node_modules\stanford-corenlp\node_modules\java\build\nodejavabridge_bindings.vcxproj]
f:\appdata\roaming\npm\node_modules\stanford-corenlp\node_modules\java\src\java.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int (..\src\java.cpp) [f:\AppData\Roaming\npm\node_modules\stanford-corenlp\node_modules\java\build\nodejavabridge_bindings.vcxproj]
f:\appdata\roaming\npm\node_modules\stanford-corenlp\node_modules\java\src\java.h(23): error C2143: syntax error : missing ',' before '&' (..\src\java.cpp) [f:\AppData\Roaming\npm\node_modules\stanford-corenlp\node_modules\java\build\nodejavabridge_bindings.vcxproj]
...
..\src\java.cpp(43): error C2819: type 'v8::Persistent<T>' does not have an overloaded member 'operator ->'
..\src\java.cpp(43): error C2039: 'InstanceTemplate' : is not a member of 'v8::Persistent<T>'
..\src\java.cpp(43): error C2227: left of '->SetInternalFieldCount' must pointto class/struct/union/generic type
..\src\java.cpp(44): error C2819: type 'v8::Persistent<T>' does not have an overloaded member 'operator ->'
..\src\java.cpp(44): error C2039: 'SetClassName' : is not a member of 'v8::Persistent<T>'
..\src\java.cpp(44): error C2039: 'NewSymbol' : is not a member of 'v8::String'
..\src\java.cpp(44): error C3861: 'NewSymbol': identifier not found
..\src\java.cpp(46): error C2664: 'node::NODE_SET_PROTOTYPE_METHOD' : cannot convert parameter 1 from 'v8::Persistent<T>' to 'v8::Handle<T>'
...

目前我安装了32位版本的Python,Java-SDK和node.js,并设置了环境变量。 (我从64位版本开始,结果相同。)

我安装了Visual Studio 2012 Express版本。

我尝试了Windows SDK版本8.1。

我尝试从SDK 6.1(2008)命令提示符调用npm调用。

我尝试了.NET 3.5和4.5。

我尝试添加

--msvs_version=2012
npm调用的

选项。

我尝试用

更新node-gyp
npm install node-gyp@latest

我会感激任何形式的输入,特别是让我理解发生了什么的输入,以便我自己找出解决方案。

2 个答案:

答案 0 :(得分:0)

我认为这应该与节点版本有关。但是我无法在stanford-corenlp下找到.travis.yml文件,所以我不知道它支持的最小/最大版本。我建议你从v10开始,然后是v8和v6,看它是否有效。

答案 1 :(得分:0)

我想这与节点模块java有关,最新的java@0.4.7工作很好。 PS:我是stanford-corenlp节点模块的作者。