I'm working for a client who has set me up with an EC2 instance where I should do some work. I'd been building an API locally, and now I transferred it to the EC2 instance. I ssh to the server and cd to the directory. I try this:
npm install mysql-libmysqlclient
Initially I got an error about "mysql_config" not being installed. This EC2 instance does not run MySQL and does not have it installed. So I sudo and:
yum install mysql
That didn't fix the problem, so I kept adding more stuff:
yum install mysql mysql-server
At some point I got the error "Can't install 'mysql.h' file not found" so I kept adding stuff:
Some of the errors seem to do with node-gyp, however, if I do this:
npm install -g node-gyp
then this installs without a problem.
And yet, if I run npm install mysql-libmysqlclient the make output seems to die with a message about node-gyp:
> mysql-libmysqlclient@1.6.0 install /home/ec2-user/daemons/deduplication_api/v11/dupe-res/node_modules/mysql-libmysqlclient
> node-gyp rebuild
make: Entering directory `/home/ec2-user/daemons/deduplication_api/v11/dupe-res/node_modules/mysql-libmysqlclient/build'
CXX(target) Release/obj.target/mysql_bindings/src/mysql_bindings.o
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In function ‘v8::Handle<v8::Value> NanError(const char*)’:
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:339:13: note: in expansion of macro ‘_NAN_ERROR’
return _NAN_ERROR(v8::Exception::Error, errmsg);
^
../../nan/nan.h: In function ‘void NanThrowError(const char*)’:
../../nan/nan.h:324:7: error: ‘ThrowException’ is not a member of ‘v8’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:343:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::Error, errmsg);
^
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:324:26: note: in expansion of macro ‘_NAN_ERROR’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:343:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::Error, errmsg);
^
../../nan/nan.h: In function ‘void NanThrowError(v8::Handle<v8::Value>)’:
../../nan/nan.h:348:5: error: ‘ThrowException’ is not a member of ‘v8’
v8::ThrowException(error);
^
../../nan/nan.h: In function ‘v8::Handle<v8::Value> NanError(const char*, int)’:
../../nan/nan.h:355:53: error: ‘New’ is not a member of ‘v8::String’
v8::Local<v8::Value> err = v8::Exception::Error(v8::String::New(msg));
^
../../nan/nan.h:357:14: error: ‘New’ is not a member of ‘v8::String’
obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
^
../../nan/nan.h:357:65: error: no matching function for call to ‘v8::Int32::New(const int&)’
obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber));
^
../../nan/nan.h:357:65: note: candidate is:
In file included from /home/ec2-user/.node-gyp/6.9.3/include/node/node.h:42:0,
from ../src/mysql_bindings.cc:12:
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:2558:25: note: static v8::Local<v8::Integer> v8::Integer::New(v8::Isolate*, int32_t)
static Local<Integer> New(Isolate* isolate, int32_t value);
^
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:2558:25: note: candidate expects 2 arguments, 1 provided
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In function ‘v8::Handle<v8::Value> NanTypeError(const char*)’:
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:369:12: note: in expansion of macro ‘_NAN_ERROR’
return _NAN_ERROR(v8::Exception::TypeError, errmsg);
^
../../nan/nan.h: In function ‘void NanThrowTypeError(const char*)’:
../../nan/nan.h:324:7: error: ‘ThrowException’ is not a member of ‘v8’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:373:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
^
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:324:26: note: in expansion of macro ‘_NAN_ERROR’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:373:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::TypeError, errmsg);
^
../../nan/nan.h: In function ‘v8::Handle<v8::Value> NanRangeError(const char*)’:
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:377:12: note: in expansion of macro ‘_NAN_ERROR’
return _NAN_ERROR(v8::Exception::RangeError, errmsg);
^
../../nan/nan.h: In function ‘void NanThrowRangeError(const char*)’:
../../nan/nan.h:324:7: error: ‘ThrowException’ is not a member of ‘v8’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:381:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
^
../../nan/nan.h:319:38: error: ‘New’ is not a member of ‘v8::String’
# define _NAN_ERROR(fun, errmsg) fun(v8::String::New(errmsg))
^
../../nan/nan.h:324:26: note: in expansion of macro ‘_NAN_ERROR’
v8::ThrowException(_NAN_ERROR(fun, errmsg)); \
^
../../nan/nan.h:381:5: note: in expansion of macro ‘_NAN_THROW_ERROR’
_NAN_THROW_ERROR(v8::Exception::RangeError, errmsg);
^
../../nan/nan.h: At global scope:
../../nan/nan.h:406:13: error: ‘node::smalloc’ has not been declared
, node::smalloc::FreeCallback callback
^
../../nan/nan.h:141:71: note: in definition of macro ‘NAN_INLINE’
# define NAN_INLINE(declarator) inline __attribute__((always_inline)) declarator
^
../../nan/nan.h:406:35: error: expected ‘,’ or ‘...’ before ‘callback’
, node::smalloc::FreeCallback callback
^
../../nan/nan.h:141:71: note: in definition of macro ‘NAN_INLINE’
# define NAN_INLINE(declarator) inline __attribute__((always_inline)) declarator
^
../../nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)’:
../../nan/nan.h:409:44: error: ‘callback’ was not declared in this scope
return node::Buffer::New(data, length, callback, hint);
^
../../nan/nan.h:409:54: error: ‘hint’ was not declared in this scope
return node::Buffer::New(data, length, callback, hint);
^
../../nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(char*, uint32_t)’:
../../nan/nan.h:416:40: error: no matching function for call to ‘New(char*&, uint32_t&)’
return node::Buffer::New(data, size);
^
../../nan/nan.h:416:40: note: candidates are:
In file included from ../src/././mysql_bindings.h:12:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, size_t)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:31:40: note: no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:34:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:34:40: note: no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:39:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t, node::Buffer::FreeCallback, void*)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:39:40: note: candidate expects 5 arguments, 2 provided
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:46:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:46:40: note: candidate expects 3 arguments, 2 provided
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In function ‘v8::Local<v8::Object> NanNewBufferHandle(uint32_t)’:
../../nan/nan.h:420:34: error: no matching function for call to ‘New(uint32_t&)’
return node::Buffer::New(size);
^
../../nan/nan.h:420:34: note: candidates are:
In file included from ../src/././mysql_bindings.h:12:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, size_t)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:31:40: note: candidate expects 2 arguments, 1 provided
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:34:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:34:40: note: candidate expects 3 arguments, 1 provided
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:39:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t, node::Buffer::FreeCallback, void*)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:39:40: note: candidate expects 5 arguments, 1 provided
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:46:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t)
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
^
/home/ec2-user/.node-gyp/6.9.3/include/node/node_buffer.h:46:40: note: candidate expects 3 arguments, 1 provided
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In function ‘v8::Local<v8::Object> NanBufferUse(char*, uint32_t)’:
../../nan/nan.h:427:12: error: ‘Use’ is not a member of ‘node::Buffer’
return node::Buffer::Use(data, size);
^
../../nan/nan.h: In constructor ‘NanCallback::NanCallback()’:
../../nan/nan.h:727:49: error: no matching function for call to ‘v8::Object::New()’
v8::Local<v8::Object> obj = v8::Object::New();
^
../../nan/nan.h:727:49: note: candidate is:
In file included from /home/ec2-user/.node-gyp/6.9.3/include/node/node.h:42:0,
from ../src/mysql_bindings.cc:12:
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:3006:24: note: static v8::Local<v8::Object> v8::Object::New(v8::Isolate*)
static Local<Object> New(Isolate* isolate);
^
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:3006:24: note: candidate expects 1 argument, 0 provided
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In constructor ‘NanCallback::NanCallback(v8::Handle<v8::Function>&)’:
../../nan/nan.h:733:49: error: no matching function for call to ‘v8::Object::New()’
v8::Local<v8::Object> obj = v8::Object::New();
^
../../nan/nan.h:733:49: note: candidate is:
In file included from /home/ec2-user/.node-gyp/6.9.3/include/node/node.h:42:0,
from ../src/mysql_bindings.cc:12:
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:3006:24: note: static v8::Local<v8::Object> v8::Object::New(v8::Isolate*)
static Local<Object> New(Isolate* isolate);
^
/home/ec2-user/.node-gyp/6.9.3/include/node/v8.h:3006:24: note: candidate expects 1 argument, 0 provided
In file included from ../src/././mysql_bindings.h:14:0,
from ../src/./mysql_bindings_connection.h:22,
from ../src/mysql_bindings.cc:17:
../../nan/nan.h: In destructor ‘NanCallback::~NanCallback()’:
../../nan/nan.h:740:12: error: ‘class v8::Persistent<v8::Object>’ has no member named ‘Dispose’
handle.Dispose();
^
../../nan/nan.h:741:12: error: ‘class v8::Persistent<v8::Object>’ has no member named ‘Clear’
handle.Clear();
^
../../nan/nan.h: In member function ‘void NanCallback::SetFunction(v8::Handle<v8::Function>&)’:
../../nan/nan.h:181:26: error: ‘NewSymbol’ is not a member of ‘v8::String’
#define NanSymbol(value) v8::String::NewSymbol(value)
^
../../nan/nan.h:746:39: note: in expansion of macro ‘NanSymbol’
NanPersistentToLocal(handle)->Set(NanSymbol("callback"), fn);
^
../../nan/nan.h: In member function ‘v8::Local<v8::Function> NanCallback::GetFunction()’:
../../nan/nan.h:181:26: error: ‘NewSymbol’ is not a member of ‘v8::String’
#define NanSymbol(value) v8::String::NewSymbol(value)
^
../../nan/nan.h:750:46: note: in expansion of macro ‘NanSymbol’
return NanPersistentToLocal(handle)->Get(NanSymbol("callback"))
^
../../nan/nan.h:751:25: error: expected primary-expression before ‘>’ token
.As<v8::Function>();
^
../../nan/nan.h:751:27: error: expected primary-expression before ‘)’ token
.As<v8::Function>();
^
../../nan/nan.h: In member function ‘void NanCallback::Call(int, v8::Handle<v8::Value>*)’:
../../nan/nan.h:181:26: error: ‘NewSymbol’ is not a member of ‘v8::String’
#define NanSymbol(value) v8::String::NewSymbol(value)
^
../../nan/nan.h:759:13: note: in expansion of macro ‘NanSymbol’
Get(NanSymbol("callback")).As<v8::Function>();
^
../../nan/nan.h:759:51: error: expected primary-expression before ‘>’ token
Get(NanSymbol("callback")).As<v8::Function>();
^
../../nan/nan.h:759:53: error: expected primary-expression before ‘)’ token
Get(NanSymbol("callback")).As<v8::Function>();
^
../../nan/nan.h:761:9: error: ‘GetCurrent’ is not a member of ‘v8::Context’
v8::Context::GetCurrent()->Global()
^
../../nan/nan.h: In member function ‘void NanAsyncWorker::SavePersistent(const char*, v8::Local<v8::Object>&)’:
../../nan/nan.h:181:26: error: ‘NewSymbol’ is not a member of ‘v8::String’
#define NanSymbol(value) v8::String::NewSymbol(value)
^
../../nan/nan.h:808:17: note: in expansion of macro ‘NanSymbol’
handle->Set(NanSymbol(key), obj);
^
../../nan/nan.h: In member function ‘v8::Local<v8::Object> NanAsyncWorker::GetFromPersistent(const char*)’:
../../nan/nan.h:181:26: error: ‘NewSymbol’ is not a member of ‘v8::String’
#define NanSymbol(value) v8::String::NewSymbol(value)
^
../../nan/nan.h:815:24: note: in expansion of macro ‘NanSymbol’
return handle->Get(NanSymbol(key)).As<v8::Object>();
^
../../nan/nan.h:815:53: error: expected primary-expression before ‘>’ token
return handle->Get(NanSymbol(key)).As<v8::Object>();
^
../../nan/nan.h:815:55: error: expected primary-expression before ‘)’ token
return handle->Get(NanSymbol(key)).As<v8::Object>();
^
../../nan/nan.h: In member function ‘virtual void NanAsyncWorker::HandleErrorCallback()’:
../../nan/nan.h:837:30: error: ‘New’ is not a member of ‘v8::String’
v8::Exception::Error(v8::String::New(errmsg))
^
../../nan/nan.h: In function ‘bool _NanGetExternalParts(v8::Handle<v8::Value>, const char**, size_t*)’:
../../nan/nan.h:1005:12: error: ‘class v8::String’ has no member named ‘IsExternalAscii’
if (str->IsExternalAscii()) {
^
../../nan/nan.h:1006:11: error: ‘ExternalAsciiStringResource’ in ‘class v8::String’ does not name a type
const v8::String::ExternalAsciiStringResource* ext;
^
../../nan/nan.h:1007:5: error: ‘ext’ was not declared in this scope
ext = str->GetExternalAsciiStringResource();
^
../../nan/nan.h:1007:16: error: ‘class v8::String’ has no member named ‘GetExternalAsciiStringResource’
ext = str->GetExternalAsciiStringResource();
^
../../nan/nan.h: In instantiation of ‘void NanDisposePersistent(v8::Persistent<T, v8::NonCopyablePersistentTraits<T> >&) [with T = v8::Object]’:
../../nan/nan.h:786:44: required from here
../../nan/nan.h:394:5: error: ‘class v8::Persistent<v8::Object>’ has no member named ‘Clear’
handle.Clear();
^
make: *** [Release/obj.target/mysql_bindings/src/mysql_bindings.o] Error 1
make: Leaving directory `/home/ec2-user/daemons/deduplication_api/v11/dupe-res/node_modules/mysql-libmysqlclient/build'
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:276:23)
gyp ERR! stack at emitTwo (events.js:106:13)
gyp ERR! stack at ChildProcess.emit (events.js:191:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 4.4.41-36.55.amzn1.x86_64
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/ec2-user/daemons/deduplication_api/v11/dupe-res/node_modules/mysql-libmysqlclient
gyp ERR! node -v v6.9.3
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
npm ERR! Linux 4.4.41-36.55.amzn1.x86_64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "mysql-libmysqlclient"
npm ERR! node v6.9.3
npm ERR! npm v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! mysql-libmysqlclient@1.6.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the mysql-libmysqlclient@1.6.0 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the mysql-libmysqlclient package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs mysql-libmysqlclient
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls mysql-libmysqlclient
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /home/ec2-user/.npm/_logs/2017-07-27T22_29_14_226Z-debug.log
using npm@4.2.0 using node@v6.9.3
I'm working for a client who has set me up with an EC2 instance where I should do some work. I'd been building an API locally, and now I transferred it to the EC2 instance. I ssh to the server and cd to the directory. I try this:
Initially I got an error about "mysql_config" not being installed. This EC2 instance does not run MySQL and does not have it installed. So I sudo and:
That didn't fix the problem, so I kept adding more stuff:
At some point I got the error "Can't install 'mysql.h' file not found" so I kept adding stuff:
Some of the errors seem to do with node-gyp, however, if I do this:
then this installs without a problem.
And yet, if I run
npm install mysql-libmysqlclient
themake
output seems to die with a message about node-gyp: