在 mac os x 上安装 MEAN 时出错
Posted
技术标签:
【中文标题】在 mac os x 上安装 MEAN 时出错【英文标题】:Error installing MEAN on mac os x 【发布时间】:2015-12-10 06:13:52 【问题描述】:安装 MEAN 时出现以下错误:
CXX(target) Release/obj.target/bson/ext/bson.o
In file included from ../ext/bson.cc:36:
In file included from ../ext/bson.h:17:
../node_modules/nan/nan.h:261:25: error: redefinition of '_NanEnsureLocal'
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Local<T> val)
^
../node_modules/nan/nan.h:256:25: note: previous definition is here
NAN_INLINE v8::Local<T> _NanEnsureLocal(v8::Handle<T> val)
^
../node_modules/nan/nan.h:661:13: error: no member named 'smalloc' in namespace
'node'
, node::smalloc::FreeCallback callback
~~~~~~^
../node_modules/nan/nan.h:672:12: error: no matching function for call to 'New'
return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
^~~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note:
candidate function not viable: no known conversion from 'uint32_t'
(aka 'unsigned int') to 'enum encoding' for 3rd argument
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/Users/konstantin/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note:
candidate function not viable: 2nd argument ('const char *') would lose
const qualifier
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/Users/konstantin/.node-gyp/4.0.0/include/node/node_buffer.h:28:40: note:
candidate function not viable: requires 2 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
^
/Users/konstantin/.node-gyp/4.0.0/include/node/node_buffer.h:36:40: note:
candidate function not viable: requires 5 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
In file included from ../ext/bson.cc:36:
In file included from ../ext/bson.h:17:
../node_modules/nan/nan.h:676:12: error: no viable conversion from
'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
return node::Buffer::New(v8::Isolate::GetCurrent(), size);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:210:7: note:
candidate constructor (the implicit copy constructor) not viable: no known
conversion from 'v8::MaybeLocal<v8::Object>' to 'const
v8::Local<v8::Object> &' for 1st argument
class Local
^
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:210:7: note:
candidate constructor (the implicit move constructor) not viable: no known
conversion from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object> &&'
for 1st argument
class Local
^
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:214:13: note:
candidate template ignored: could not match 'Local' against 'MaybeLocal'
V8_INLINE Local(Local<S> that)
^
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:326:13: note:
candidate template ignored: could not match 'S *' against
'v8::MaybeLocal<v8::Object>'
V8_INLINE Local(S* that)
^
In file included from ../ext/bson.cc:36:
In file included from ../ext/bson.h:17:
../node_modules/nan/nan.h:683:26: error: no member named 'Use' in namespace
'node::Buffer'
return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
~~~~~~~~~~~~~~^
In file included from ../ext/bson.cc:14:
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:221:5: error:
assigning to 'v8::Primitive *volatile' from incompatible type
'v8::Value *'
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:180:37: note:
expanded from macro 'TYPE_CHECK'
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
^ ~~~~~~~~~~~~~~~~~~
../node_modules/nan/nan.h:414:12: note: in instantiation of function template
specialization 'v8::Local<v8::Primitive>::Local<v8::Value>' requested here
return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent())));
^
../node_modules/nan/nan.h:398:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val))
^
In file included from ../ext/bson.cc:14:
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:221:5: error:
assigning to 'v8::Boolean *volatile' from incompatible type 'v8::Value *'
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:180:37: note:
expanded from macro 'TYPE_CHECK'
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
^ ~~~~~~~~~~~~~~~~~~
../node_modules/nan/nan.h:424:12: note: in instantiation of function template
specialization 'v8::Local<v8::Boolean>::Local<v8::Value>' requested here
return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent())));
^
../node_modules/nan/nan.h:398:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val))
^
In file included from ../ext/bson.cc:14:
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:221:5: error:
assigning to 'v8::Function *volatile' from incompatible type 'v8::Value *'
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:180:37: note:
expanded from macro 'TYPE_CHECK'
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
^ ~~~~~~~~~~~~~~~~~~
../node_modules/nan/nan.h:1514:12: note: in instantiation of function template
specialization 'v8::Local<v8::Function>::Local<v8::Value>' requested here
return NanEscapeScope(NanNew(handle)->Get(kCallbackIndex)
^
../node_modules/nan/nan.h:398:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val))
^
In file included from ../ext/bson.cc:14:
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:221:5: error:
assigning to 'v8::Object *volatile' from incompatible type 'v8::Value *'
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/konstantin/.node-gyp/4.0.0/include/node/v8.h:180:37: note:
expanded from macro 'TYPE_CHECK'
*(static_cast<T* volatile*>(0)) = static_cast<S*>(0); \
^ ~~~~~~~~~~~~~~~~~~
../node_modules/nan/nan.h:1632:12: note: in instantiation of function template
specialization 'v8::Local<v8::Object>::Local<v8::Value>' requested here
return NanEscapeScope(handle->Get(NanNew(key)).As<v8::Object>());
^
../node_modules/nan/nan.h:398:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(_NanEnsureLocal(val))
^
9 errors generated.
make: *** [Release/obj.target/bson/ext/bson.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/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 Darwin 14.5.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release/bson.node" "--module_name=bson" "--module_path=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release"
gyp ERR! cwd /usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release/bson.node --module_name=bson --module_path=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at emitTwo (events.js:87:13)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:172:7)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:817:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
node-pre-gyp ERR! System Darwin 14.5.0
node-pre-gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext
node-pre-gyp ERR! node -v v4.0.0
node-pre-gyp ERR! node-pre-gyp -v v0.6.4
node-pre-gyp ERR! not ok
Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release/bson.node --module_name=bson --module_path=/usr/local/lib/node_modules/mean-cli/node_modules/mongoose/node_modules/bson/node_modules/bson-ext/build/Release' (1)
npm ERR! registry error parsing json
npm ERR! registry error parsing json
似乎 node-gyp 有问题或/和新版本的 node/node-gyp 有问题:
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
我尝试了 MEAN 网站上提供的所有提示;但我不知道上面的错误在说什么。
版本: - 节点:4.0.0 - npm:2.14.3 - 凉亭:1.5.2 - 吞咽:3.9.0 - mongoDB:3.0.6
full console log without sudo
full console log with sudo
【问题讨论】:
大家都明白了吗?我也看到与其他 npm 模块相同的错误消息 【参考方案1】:我在节点 4.x 和更高版本中遇到同样的错误。
nodejs 0.12.x 应该可以在 MacOS 上运行。
0.12 也被认为是更稳定的版本。请参阅https://strongloop.com/strongblog/should-i-use-node-js-or-io-js-and-which-version/,此时建议使用 0.12。
【讨论】:
【参考方案2】:将 mongoose 更新到最新版本 (4.1.8 atm)。
或者直接运行:
npm install mongoose
(没有任何版本参考)
【讨论】:
以上是关于在 mac os x 上安装 MEAN 时出错的主要内容,如果未能解决你的问题,请参考以下文章
安装 PyGraphviz(Mac OS X、Anaconda)时出错
在 Mac OS Catalina (10.15.7) 上安装 cocoapods 时出错