okland / accounts-phone

A login service based on mobile phone number for Meteor
119 stars 87 forks source link

No compatible binary found when trying to update Meteor to 1.3.2 #23

Open OMFG5716 opened 8 years ago

OMFG5716 commented 8 years ago

=> Errors while initializing project:

While checking for okland:accounts-phone@0.0.19: error: No compatible binary build found for this package. Contact the package author and ask them to publish it for your platform.

kenlane33 commented 8 years ago

Same issue. Same error. Fixed that with: meteor add okland:accounts-phone@0.0.21 (The default is 0.0.19, if I recall correctly.)

This version moved me to the next error:

>>>>>>>>: ken$ meteor add okland:accounts-phone@0.0.21
 => Errors while adding packages:                                                           
While selecting package versions:
error: Conflict: Constraint npm-bcrypt@=0.7.8_2 is not satisfied by npm-bcrypt 0.8.5.
Constraints on package "npm-bcrypt":
* npm-bcrypt@0.8.5 <- accounts-password 1.1.8
* npm-bcrypt@=0.7.8_2 <- okland:accounts-phone 0.0.21

In my case I no longer needed accounts-password, just whatever useraccounts-core wants under the hood, so then I:

>>>>>>>>: ken$ meteor remove accounts-password
Changes to your project's package version selections:
accounts-password  removed from your project  
email              removed from your project
npm-bcrypt         removed from your project // <<<<<<< The nefarious, ornery culprit !
sha                removed from your project
srp                removed from your project
accounts-password: removed dependency         

>>>>>>>>: ken$ meteor add okland:accounts-phone@0.0.21
Changes to your project's package version selections:
email                  added, version 1.0.12  
npm-bcrypt             added, version 0.7.8_2
okland:accounts-phone  added, version 0.0.21
sha                    added, version 1.0.7
srp                    added, version 1.0.8

okland:accounts-phone: A login service based on mobile phone number, For Meteor.
SZL-Mac-Pro:SocialMe ken$

Working!!! For this case.

I reckon accounts-phone might survive with npm-bcrypt@0.8.5, (bumped up from 0.7.8_2) but deadlines loom and I've not yet had the pleasure of forking and experimenting just yet.

OMFG5716 commented 8 years ago

meteor update Update to release METEOR@1.3.2.4 is impossible: While selecting package versions: error: Conflict: Constraint npm-bcrypt@0.8.5 is not satisfied by npm-bcrypt 0.7.8_2. Constraints on package "npm-bcrypt":

  • npm-bcrypt@0.8.5 <- accounts-password 1.1.8
  • npm-bcrypt@=0.7.8_2 <- okland:accounts-phone 0.0.21

This project is at the latest release which is compatible with your current package constraints. Your top-level dependencies are at their latest compatible versions.

Yup! I did get to this part. Bcrypt algo's package is indeed the culprit lol. But I am afraid, in my case I do need accounts-password working along with accounts-phone.

@kenlane33 Thanks for the tip, to append the version constraint to 'meteor add' on accounts-phone!

kenlane33 commented 8 years ago

So I ended up needing accounts-password, too. Manually adding a forked package is so tricky to pass around to the team that I made a naughty duplicate atmosphere package:

kenlane22:accounts-phone

The only thing I changed was to bump the version of bcrypt so that it works with accounts-password. There is quite likely a much better next step (umm pull request for fork?) than my quick fix, but you are welcome to use that one if you like. Now it is as simple as:

meteor add accounts-password
meteor add kenlane22:accounts-phone@0.0.21

Tested:

>>>>>>>>> meteor create ick
Created a new Meteor app in 'ick'.            
To run your new app:                          
  cd ick                                      
  meteor                                      
If you are new to Meteor, try some of the learning resources here:
  https://www.meteor.com/learn                
>>>>>>>>> cd ick              
>>>>>>>>> meteor add accounts-password                           
Changes to your project's package version selections:
accounts-base          added, version 1.2.7   
accounts-password      added, version 1.1.8
ddp-rate-limiter       added, version 1.0.4
email                  added, version 1.0.12
localstorage           added, version 1.0.9
npm-bcrypt             added, version 0.8.5
rate-limit             added, version 1.0.4
service-configuration  added, version 1.0.9
sha                    added, version 1.0.7
srp                    added, version 1.0.8
accounts-password: Password support for accounts
>>>>>>>>> meteor add kenlane22:accounts-phone@0.0.21                                              
Changes to your project's package version selections:
kenlane22:accounts-phone  added, version 0.0.21
kenlane22:accounts-phone: A login service based on mobile phone number, For Meteor.
>>>>>>>>> 

Really I just bumped

api.use('npm-bcrypt@=0.7.8_2', 'server');

to

api.use('npm-bcrypt@=0.8.5', 'server');

in package.js.

lawrentiy commented 8 years ago

Hi, @kenlane33 ! Thanks for answer! Can you update npm-bcrypt up to 0.8.6_1 ? Thanks!

kenlane33 commented 8 years ago

Done! So kenlane22:accounts-phone@0.0.22 now has npm-bcrypt@=0.8.6_1 meteor add kenlane22:accounts-phone@0.0.22 I suppose you can drop the @0.0.22 here since you want the latest version. The version number change to bcrypt is the only mod I made to okland's excellent project. Okland's original Let me know if that worked or not. Atmosphere page -Ken =]

lawrentiy commented 8 years ago

Great! Thanx! I don`t like fork and multiply packages :) Hope, @okland will update that package....

jwangkasa commented 8 years ago

I am newbie trying to learn on how to do Angular MeteorJS whatsapp tutorial.

I have an issue on the authentication, can you help me? => Errors while adding packages:

While selecting package versions: error: Conflict: Constraint npm-bcrypt@=0.7.8_2 is not satisfied by npm-bcrypt 0.9.1. Constraints on package "npm-bcrypt":


I tried to do meteor remove npm-bcrypt and then reinstall using specific version: meteor add npm-bcrypt@0.7.8_2 and then I re-run the meteor add okland:accounts-phone@0.0.21 however I faced the same issues...

Appreciate your help...

@kenlane33 Appreciate your input here...

When I tried your ics format, I received the following errors: => Errors while parsing arguments:

While adding package kenlande22:accounts-phone@0.0.21: error: no such package

SINM50932177A:ick XXXXXX$ meteor add okland:accounts-phone@0.0.21 => Errors while adding packages:

While selecting package versions: error: Potentially incompatible change required to top-level dependency: accounts-password 1.1.7, was 1.3.0. Constraints on package "accounts-password":

To allow potentially incompatible changes to top-level dependencies, you must pass --allow-incompatible-update on the command line.

DIRECTORY$$$$$:ick XXXXXX$ meteor add okland:accounts-phone@0.0.21 --allow-incompatible-update => Errors while adding packages:

While loading package npm-bcrypt@0.7.8_2: error: Command failed: /Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/bin/npm rebuild --no-bin-links --update-binary ../src/bcrypt_node.cc:54:18: error: no member named 'Dispose' in 'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits

' callback.Dispose();

../src/bcrypt_node.cc:128:19: error: unknown type name 'uv_work_t'
void GenSaltAsync(uv_work_t* req) {
^
../src/bcrypt_node.cc:137:24: error: unknown type name 'uv_work_t'
void GenSaltAsyncAfter(uv_work_t* req) {
^
../src/bcrypt_node.cc:138:17: error: calling a protected constructor of class
'v8::HandleScope'
HandleScope scope;
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:885:13: note: declared
protected here
V8_INLINE HandleScope() {}
^
../src/bcrypt_node.cc:146:44: error: no member named 'New' in
'v8::String'
argv[0] =
Exception::Error(String::New(baton->error.c_str()));
~~~~~~~~^
../src/bcrypt_node.cc:147:19: error: no matching function for call to
'Undefined'
argv[1] = Undefined();
^~~~~~~~~
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:315:27: note: candidate
function not viable: requires single argument 'isolate', but no arguments were
provided
friend Local<Primitive> Undefined(Isolate* isolate);
^
../src/bcrypt_node.cc:150:19: error: no matching function for call to
'Undefined'
argv[0] = Undefined();
^~~~~~~~~
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:315:27: note: candidate
function not viable: requires single argument 'isolate', but no arguments were
provided
friend Local<Primitive> Undefined(Isolate* isolate);
^
../src/bcrypt_node.cc:151:19: warning: 'Encode' is deprecated: Use
Encode(isolate, ...) [-Wdeprecated-declarations]
argv[1] = Encode(baton->salt.c_str(), baton->salt.size(),
BINARY);
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/node.h:300:45: note: 'Encode' has
been explicitly marked deprecated here
inline v8::Local<v8::Value> Encode(
^
../src/bcrypt_node.cc:156:20: error: member reference type
'v8::Persistent<v8::Function>' is not a pointer; did you mean to use '.'?
baton->callback->Call(Context::GetCurrent()->Global(), 2, argv);
~~~~~~~~~~~~~~~^~
.
../src/bcrypt_node.cc:156:22: error: no member named 'Call' in
'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function>
'
baton->callback->Call(Context::GetCurrent()->Global(), 2, argv);
~~~~~~~~~~~~~~~  ^
../src/bcrypt_node.cc:156:36: error: no member named 'GetCurrent' in
'v8::Context'
baton->callback->Call(Context::GetCurrent()->Global(), 2,
argv);
~~~~~~~~~^
../src/bcrypt_node.cc:159:9: warning: 'FatalException' is deprecated: Use
FatalException(isolate, ...) [-Wdeprecated-declarations]
FatalException(try_catch);
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/node.h:284:29: note:
'FatalException' has been explicitly marked deprecated here
inline void FatalException(const v8::TryCatch& try_catch)
{
^
../src/bcrypt_node.cc:164:34: error: unknown type name 'Arguments'; did you
mean 'v8::internal::Arguments'?
Handle<Value> GenerateSalt(const Arguments &args)
{
^~~~~~~~~
v8::internal::Arguments
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:139:7: note:
'v8::internal::Arguments' declared here
class Arguments;
^
../src/bcrypt_node.cc:165:17: error: calling a protected constructor of class
'v8::HandleScope'
HandleScope scope;
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:885:13: note: declared
protected here
V8_INLINE HandleScope() {}
^
../src/bcrypt_node.cc:167:13: error: member access into incomplete type 'const
v8::internal::Arguments'
if (args.Length() < 3) {
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:139:7: note: forward
declaration of 'v8::internal::Arguments'
class Arguments;
^
../src/bcrypt_node.cc:168:60: error: no member named 'New' in
'v8::String'
return ThrowException(Exception::TypeError(String::New("3 arguments
expected")));
~~~~~~~~^
../src/bcrypt_node.cc:171:34: error: type 'const v8::internal::Arguments' does
not provide a subscript operator
if (!Buffer::HasInstance(args[1]) || Buffer::Length(args[1].As<Object>()) !=
16) {
~~~~^~
../src/bcrypt_node.cc:171:61: error: type 'const v8::internal::Arguments' does
not provide a subscript operator
if (!Buffer::HasInstance(args[1]) || Buffer::Length(args[1].As<Object>()) !=
16) {
~~~~^~
../src/bcrypt_node.cc:171:68: error: 'Object' does not refer to a value
if (!Buffer::HasInstance(args[1]) || Buffer::Length(args[1].As<Object>()) !=
16) {
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:2587:17: note: declared here
class V8_EXPORT Object : public Value {
^
../src/bcrypt_node.cc:171:76: error: expected expression
if (!Buffer::HasInstance(args[1]) || Buffer::Length(args[1].As<Object>()) !=
16)
{
^
../src/bcrypt_node.cc:172:60: error: no member named 'New' in
'v8::String'
return ThrowException(Exception::TypeError(String::New("Second argument must be
a 16 byte Buffer")));
~~~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
make: *** [Release/obj.target/bcrypt_lib/src/bcrypt_node.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit
(/Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/node-gyp/lib/build.js:276: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 15.6.0
gyp ERR! command
"/Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/bin/node"
"/Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js"
"rebuild"
gyp ERR! cwd
/Users/XXXXXX/.meteor/packages/npm-bcrypt/.0.7.8_2.1twvxy8++os.osx.x86_64+web.browser+web.cordova/npm/node_modules/.temp-12nmw8r/node_modules/bcrypt
gyp ERR! node -v v4.5.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok 

npm ERR! Darwin 15.6.0 npm ERR! argv "/Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/bin/node" "/Users/XXXXXX/.meteor/packages/meteor-tool/.1.4.1_1.1h0re2h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/bin/npm" "rebuild" "--no-bin-links" "--update-binary" npm ERR! node v4.5.0 npm ERR! npm v3.10.6 npm ERR! code ELIFECYCLE npm ERR! bcrypt@0.7.8 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the bcrypt@0.7.8 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 bcrypt 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 bcrypt npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls bcrypt npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request: npm ERR! /Users/XXXXXX/.meteor/packages/npm-bcrypt/.0.7.8_2.1twvxy8++os.osx.x86_64+web.browser+web.cordova/npm/node_modules/.temp-12nmw8r/npm-debug.log ../src/bcrypt_node.cc:54:18: error: no member named 'Dispose' in 'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits

' callback.Dispose();

../src/bcrypt_node.cc:128:19: error: unknown type name 'uv_work_t'
void GenSaltAsync(uv_work_t* req) {
^
../src/bcrypt_node.cc:137:24: error: unknown type name 'uv_work_t'
void GenSaltAsyncAfter(uv_work_t* req) {
^
../src/bcrypt_node.cc:138:17: error: calling a protected constructor of class
'v8::HandleScope'
HandleScope scope;
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:885:13: note: declared
protected here
V8_INLINE HandleScope() {}
^
../src/bcrypt_node.cc:146:44: error: no member named 'New' in
'v8::String'
argv[0] =
Exception::Error(String::New(baton->error.c_str()));
~~~~~~~~^
../src/bcrypt_node.cc:147:19: error: no matching function for call to
'Undefined'
argv[1] = Undefined();
^~~~~~~~~
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:315:27: note: candidate
function not viable: requires single argument 'isolate', but no arguments were
provided
friend Local<Primitive> Undefined(Isolate* isolate);
^
../src/bcrypt_node.cc:150:19: error: no matching function for call to
'Undefined'
argv[0] = Undefined();
^~~~~~~~~
/Users/XXXXXX/.node-gyp/4.5.0/include/node/v8.h:315:27: note: candidate
function not viable: requires single argument 'isolate', but no arguments were
provided
friend Local<Primitive> Undefined(Isolate* isolate);
^
../src/bcrypt_node.cc:151:19: warning: 'Encode' is deprecated: Use
Encode(isolate, ...) [-Wdeprecated-declarations]
argv[1] = Encode(baton->salt.c_str(), baton->salt.size(),
BINARY);
^
/Users/XXXXXX/.node-gyp/4.5.0/include/node/node.h:300:45: note: 'Encode' has
been explicitly marked deprecated here
inline v8::Local<v8::Value> Encode(
^
../src/bcrypt_node.cc:156:20: error: member reference type
'v8::Persistent<v8::Function>' is not a pointer; did you mean to use '.'?
baton->callback->Call(Context::GetCurrent()->Global(), 2, argv);
~~~~~~~~~~~~~~~^~
.
../src/bcrypt_node.cc:156:22: error: no member named 'Call' in
'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function>
'
baton->callback->Call(Context::GetCurrent()->Global(), 2, argv);
~~~~~~~~~~~~~~~  ^
../src/bcrypt_node.cc:156:36: error: no member named 'GetCurrent' in
'v8::Context'
baton->callback->Call(Context::GetCurrent()->Global(), 2,
argv);
~~~~~~~~~^
../src/bcrypt_node.cc:159:9: warning: 'FatalException' is deprecated: Use
FatalException(isolate, ...) [-Wdeprecated-declarations]
FatalException(try_catch);
^
/Users/i311571/.node-gyp/4.5.0/include/node/node.h:284:29: note:
'FatalException' has been explicitly marked deprecated here
inline void FatalException(const v8::TryCatch& try_catch)
{
^
../src/bcrypt_node.cc:164:34: error: unknown type name 'Arguments'; did you
mean 'v8::internal::Arguments'?
Handle<Value> GenerateSalt(const Arguments &args)
{
^~~~~~~~~
v8::internal::Arguments
.......

"rebuild" "--no-bin-links" "--update-binary" npm ERR! node v4.5.0 npm ERR! npm v3.10.6 npm ERR! code ELIFECYCLE npm ERR! bcrypt@0.7.8 install: node-gyp rebuild npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the bcrypt@0.7.8 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 bcrypt 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 bcrypt npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls bcrypt npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request: npm ERR! /Users/XXXXXX/.meteor/packages/npm-bcrypt/.0.7.8_2.1twvxy8++os.osx.x86_64+web.browser+web.cordova/npm/node_modules/.temp-12nmw8r/npm-debug.log

kenlane33 commented 8 years ago

I haven't tried it in a while, but you could check out the version bump I did: meteor add kenlane22:accounts-phone@0.0.22 As long as accounts-password hasn't moved along, it might work. If it gives trouble and wants a new version, let me know and I'll bump the bcrypt version again. Or you could! I'll happily switch to using jwangkasa:accounts-phone@0.0.23 :) I'm pretty green myself, but trying to crack my knuckles when time allows. I suspect there is a smarter fix than all this manual patching and dream of one of the great_ones weighing in on this. @UriGoldshtein could know of a mystic npm solution, perhaps? Or something simpler that I'm just not getting? Anyhoo, let me know if `0.0.22`` helps or not. -Ken =]

jwangkasa commented 8 years ago

@kenlane33

Thank you on your quick reply. Wow... your solution works as a magic.

Just curious mate... how did you force the downgrade the npm-bcrypt to 0.8.6_1 (would like to learn this 👍 )

accounts-base added, version 1.1.3 email added, version 1.0.16 kenlane22:accounts-phone added, version 0.0.22 localstorage added, version 1.0.11 npm-bcrypt downgraded from 0.9.1 to 0.8.6_1 service-configuration added, version 1.0.3 sha added, version 1.0.8 srp added, version 1.0.9

kenlane33 commented 8 years ago

In brief:

  1. Fork okland:accounts-phone and pull it to your machine for editing
  2. Edit the package.js file
  3. Rename the prefix of the name: to your Atmosphere username. Example: name : 'kenlane22:accounts-phone',
  4. Bump the version number of the package itself.
  5. Edit the line: api.use('npm-bcrypt@=0.8.6_1', 'server'); to use the version you prefer.
  6. Publish the package to Atmosphere. `meteor publish
  7. cd back to your project
  8. `meteor remove ____`` whatever you had before (if needed)
  9. meteor add ____ your new package to grab it from ye olde Atmosphere

Effectively, I just changed the version of the one line in #5. The rest is the hand jive to get it in place.

Also, an over-abundance of detail on package publishing is here.

-Ken =]

marnibrewster commented 8 years ago

@kenlane33 Thanks for the version bump! Worked for me!

littledumb commented 8 years ago

@kenlane33 Thanks! You saved my day.

gregory commented 8 years ago

Ran into the same issue, caused by npm-bcrypt being at 0.7.8_2. Fixed the issue by upgrading npm-bcrypt to latest, but then ran into this issue on heroku. Downgrading to 0.8.6_1 fixed it.