在Windows 7上的节点失败

==============================

已解决:从节点4.0.0切换到0.12.7。 Node v4.0.0似乎是相当原始的

我读过很多文章,他们没有帮助我。 任何解决方法?

我已经在Windows 7上安装了Visual Studio Express 2013,并set GYP_MSVS_VERSION=2013 。 但是在npm install我仍然得到了与socket.io依赖相关的以下错误:

 error C2995: 'v8::Local<T> _NanEnsureLocal(v8::Local<T>)' : function template error C3083: 'smalloc': the symbol to the left of a '::' must be a type [ error C2039: 'FreeCallback' : is not a member of 'node' [ error C2061: syntax error : identifier 'FreeCallback' [ error C2065: 'callback' : undeclared identifier [ .............. gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil gyp ERR! node -v v4.0.0 gyp ERR! node-gyp -v v3.0.1 gyp ERR! not ok 

完整的日志

 PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node rebuild ) Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. bufferutil.cc PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(263): error C2995: 'v8::Local<T> _NanEnsureLocal(v8::Local<T>)' : function template has already been defined [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(256) : see declaration of '_NanEnsureLocal' PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(661): error C3083: 'smalloc': the symbol to the left of a '::' must be a type [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(661): error C2039: 'FreeCallback' : is not a member of 'node' [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(661): error C2061: syntax error : identifier 'FreeCallback' [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(665): error C2065: 'callback' : undeclared identifier [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(665): error C2065: 'hint' : undeclared identifier [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(672): error C2665: 'node::Buffer::New' : none of the 4 overloads could convert all the argument types [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] C:\Users\VBakhmatiuk\.node-gyp\4.0.0\include\node\node_buffer.h(43): could be 'v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate *,char *,size_t)' C:\Users\VBakhmatiuk\.node-gyp\4.0.0\include\node\node_buffer.h(31): or 'v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate *,v8::Local<v8::String>,node::encoding)' while trying to match the argument list '(v8::Isolate *, const char *, uint32_t)' PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(676): error C2664: 'v8::Local<v8::Object>::Local(const v8::Local<v8::Object> &)' : cannot convert argument 1 from 'v8::MaybeLocal<v8::Object>' to 'const v8::Local<v8::Object> &' [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] Reason: cannot convert from 'v8::MaybeLocal<v8::Object>' to 'const v8::Local<v8::Object>' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(683): error C2039: 'Use' : is not a member of 'node::Buffer' [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\node_modules\nan\nan.h(683): error C3861: 'Use': identifier not found [PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj] gyp ERR! build error gyp ERR! stack Error: `C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe` failed with exit code: 1 gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil gyp ERR! node -v v4.0.0 gyp ERR! node-gyp -v v3.0.1 gyp ERR! not ok > utf-8-validate@1.1.0 install PROJECT_PATH\node_modules\webpack-dev-server\node_modules\socket.io\node_modules\engine.io\node_modules\ws\node_modules\utf-8-validate > node-gyp rebuild 

我在Ubuntu和Mac上遇到了这个确切的问题。 回滚到socket.io版本1.3.5应该工作。 在Mac和Ubuntu上这个命令是:npm install socket.io@1.3.5。

我不知道窗口的命令是什么。

尝试这个:

  • 安装Visual Studio社区15
  • 执行msbuild提示符(visual studio工具访问菜单)
  • 将MsBuild程序添加到pathenv: C:\Program Files (x86)\MSBuild\14.0\Bin
  • 执行npm config set msvs_version 2015 --global
  • 将目录添加到一个短的位置(有时会因为windows系统中的260个字符的限制而失败)

似乎与npm-debug系统和节点4集成失败。 如果您正尝试使用生成器,请尝试在使用生成器的情况下代码已经运行

从被接受的答案中看不出真正的解决scheme。

我在Win7上遇到完全相同的问题,我不得不完全卸载Node 4.0.0并从https://nodejs.org/dist/v0.12.7/重新安装0.12.7

之后, npm install完美。

除了安装适当的Visual Studio和npmconfiguration,您可能还需要删除'node_modules'目录以使'npm install'再次运行。