Unable to install appium on MAC by npm

Below are the logs

[email protected] install /usr/local/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
node-gyp rebuild

CXX(target) Release/obj.target/validation/src/validation.o
In file included from …/src/validation.cc:15:
…/node_modules/nan/nan.h:261:25: error: redefinition of ‘_NanEnsureLocal’
NAN_INLINE v8::Local _NanEnsureLocal(v8::Local val) {
^
…/node_modules/nan/nan.h:256:25: note: previous definition is here
NAN_INLINE v8::Local _NanEnsureLocal(v8::Handle 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/suziying/.node-gyp/4.1.1/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::MaybeLocalv8::Object New(v8::Isolate* isolate,
^
/Users/suziying/.node-gyp/4.1.1/include/node/node_buffer.h:43:40: note:
candidate function not viable: 2nd argument ('const char ') would lose
const qualifier
NODE_EXTERN v8::MaybeLocalv8::Object New(v8::Isolate
isolate,
^
/Users/suziying/.node-gyp/4.1.1/include/node/node_buffer.h:28:40: note:
candidate function not viable: requires 2 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocalv8::Object New(v8::Isolate* isolate, size_t length);
^
/Users/suziying/.node-gyp/4.1.1/include/node/node_buffer.h:36:40: note:
candidate function not viable: requires 5 arguments, but 3 were provided
NODE_EXTERN v8::MaybeLocalv8::Object New(v8::Isolate* isolate,
^
In file included from …/src/validation.cc:15:
…/node_modules/nan/nan.h:676:12: error: no viable conversion from
‘v8::MaybeLocalv8::Object’ to ‘v8::Localv8::Object
return node::Buffer::New(v8::Isolate::GetCurrent(), size);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:210:7: note: candidate
constructor (the implicit copy constructor) not viable: no known
conversion from ‘v8::MaybeLocalv8::Object’ to ‘const
v8::Localv8::Object &’ for 1st argument
class Local {
^
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:210:7: note: candidate
constructor (the implicit move constructor) not viable: no known
conversion from ‘v8::MaybeLocalv8::Object’ to ‘v8::Localv8::Object &&’
for 1st argument
class Local {
^
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:214:13: note: candidate
template ignored: could not match ‘Local’ against ‘MaybeLocal’
V8_INLINE Local(Local that)
^
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:326:13: note: candidate
template ignored: could not match 'S ’ against
‘v8::MaybeLocalv8::Object
V8_INLINE Local(S
that)
^
In file included from …/src/validation.cc:15:
…/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 …/src/validation.cc:7:
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:221:5: error: assigning to
‘v8::Primitive *volatile’ from incompatible type ‘v8::Value *’
TYPE_CHECK(T, S);
^
~
/Users/suziying/.node-gyp/4.1.1/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::Localv8::Primitive::Localv8::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 …/src/validation.cc:7:
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:221:5: error: assigning to
'v8::Boolean volatile’ from incompatible type 'v8::Value
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/suziying/.node-gyp/4.1.1/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::Localv8::Boolean::Localv8::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 …/src/validation.cc:7:
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:221:5: error: assigning to
'v8::Function volatile’ from incompatible type 'v8::Value
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/suziying/.node-gyp/4.1.1/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::Localv8::Function::Localv8::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 …/src/validation.cc:7:
/Users/suziying/.node-gyp/4.1.1/include/node/v8.h:221:5: error: assigning to
'v8::Object volatile’ from incompatible type 'v8::Value
TYPE_CHECK(T, S);
^~~~~~~~~~~~~~~~
/Users/suziying/.node-gyp/4.1.1/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::Localv8::Object::Localv8::Value’ requested here
return NanEscapeScope(handle->Get(NanNew(key)).Asv8::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/validation/src/validation.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/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 Darwin 14.5.0
gyp ERR! command “/usr/local/Cellar/node/4.1.1/bin/node” “/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js” “rebuild”
gyp ERR! cwd /usr/local/lib/node_modules/appium/node_modules/ws/node_modules/utf-8-validate
gyp ERR! node -v v4.1.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm WARN install:utf-8-validate [email protected] install: node-gyp rebuild
npm WARN install:utf-8-validate Exit status 1

[email protected] install /usr/local/lib/node_modules/appium/node_modules/appium-chromedriver
node install-npm.js

info Chromedriver Install Opening temp file to write chromedriver_mac32 to…
info Chromedriver Install Downloading http://chromedriver.storage.googleapis.com/2.18/chromedriver_mac32.zip
RequestError: Error: connect ETIMEDOUT 74.125.203.128:80
at new RequestError (/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/node_modules/request-promise/lib/errors.js:11:15)
at Request.RP$callback [as _callback] (/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/node_modules/request-promise/lib/rp.js:56:32)
at self.callback (/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/node_modules/request/request.js:198:22)
at emitOne (events.js:77:13)
at Request.emit (events.js:169:7)
at Request.onRequestError (/usr/local/lib/node_modules/appium/node_modules/appium-chromedriver/node_modules/request/request.js:867:8)
at emitOne (events.js:77:13)
at ClientRequest.emit (events.js:169:7)
at Socket.socketErrorListener (_http_client.js:259:9)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at emitErrorNT (net.js:1250:8)
at doNTCallback2 (node.js:429:9)
at process._tickCallback (node.js:343:17)
npm WARN install:appium-chromedriver [email protected] install: node install-npm.js
npm WARN install:appium-chromedriver Exit status 1
/usr/local/lib
└── (empty)

npm ERR! code 1

@scottdixon Would you please help on this case ? Our client now not be able to install appium by npm. Thanks so much

What are the exact install steps that you have performed so far?

Hi Cesar,

Step1. npm uninstall -g appium
Step2. npm uninstall -g [email protected]

I also have tried add sudo before nom, but it still not working.

You need to install node.js first. Also, I don’t think you need to uninstall appium; just run the standard commands to perform an install. This page contains the steps to follow at the bottom, http://appium.io.

Remember not to run the commands with sudo, as you may run into issues.

Thanks Cesar. I already installed node, otherwise i cannot use npm i think. Now i am trying to re-install appium without sudo. God bless me…

Attach this log
npm-debug.log (5.9 KB)

Based on the logs, you have node version 4.1.1 and npm 3.3.4; I have node version v0.12.7 and npm 2.14.2, and I just updated Appium with no issues. How did you install node? Also, what version of Mac OS X do you have? I have latest El Capitan.

i am using Yosemite now. i installed node by brew on terminal. i am totally give up and don’t know what should i do now.

No idea it’s my operation mistake or it’s appium bug.

Check your homebrew version (brew -v); if it’s not 0.9.5, reinstall it by running these commands:

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”
ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

After that, install node and appium again.

Hi Cesar,

Thanks for your help. I am trying to uninstall brew and re-install node and appium.

Once i got answer, will let you know. BTW, my brew version is 0.9.5. but i sill uninstalled the brew.

Thank you.

Cool, hope that fixes your issue. If it still fails, please share the exact steps and commands that you performed.

Unfortunately, i failed again. The steps are like below:

  1. Uninstall brew (use the command you give to me)
  2. Reinstall brew (use the command you give to me)
  3. node -v
  4. npm -v
  5. npm install -g appium

The log is attached.npm-debug.log (962.3 KB)

24710 error network This is most likely not a problem with npm itself
24710 error network and is related to network connectivity.
24710 error network In most cases you are behind a proxy or have bad network settings.
24710 error network
24710 error network If you are behind a proxy, please make sure that the
24710 error network 'proxy' config is set properly.  See: 'npm help config'

So do you think you could be having network issues? Since this is at a client’s, have you gotten the proper network information from them?

Thanks @wreed. As you may know, i am in China…

Do you have any good suggestions on this ? i have switched to TaoBao NPM, but it still not work.

Do you know how to set up VPN for npm ?

Thanks a lot

I would doubt you need to set up a VPN, that seems a little extreme. However, npm itself seems to think it might be behind a proxy. Although I have little experience in this myself, even a casual google search turns up a ton of helpful posts like this one:

http://jjasonclark.com/how-to-setup-node-behind-web-proxy/

I encourage you to read up on this and I hope it solves your problem. Make sure to do your own google search if that particular article is not the solution.

Continuing the discussion from Unable to install appium on MAC by npm:

After having reinstalled homebrew, these are the commands that you need to execute:

brew install node
npm install -g appium
npm install wd

As specified at the bottom of the page http://appium.io.

Thanks @Cesar and @wreed , i have solved this issue. To be frank, no idea how it works. i just try over and over time again…

Now i am trying to install wd.

Thanks again for your great help.

BTW,@Cesar and @wreed i found that the driver.findElement().clear() method looks like does not work well ? Right ?

I am trying to clear the text filed on Android. However it doesn’t work and just append string on the text field.

I would have to look into your specific case; it has always worked for me.