有很多类似的主题,我在本周末彻底解决了这个问题,其中没有一个包含我的问题的答案。
通过调用
安装节点包stanford-corenlpnpm 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-gypnpm install node-gyp@latest
我会感激任何形式的输入,特别是让我理解发生了什么的输入,以便我自己找出解决方案。
答案 0 :(得分:0)
我认为这应该与节点版本有关。但是我无法在stanford-corenlp下找到.travis.yml文件,所以我不知道它支持的最小/最大版本。我建议你从v10开始,然后是v8和v6,看它是否有效。
答案 1 :(得分:0)
我想这与节点模块java有关,最新的java@0.4.7工作很好。 PS:我是stanford-corenlp节点模块的作者。