loopbackio / loopback-next

LoopBack makes it easy to build modern API applications that require complex integrations.
https://loopback.io
Other
4.93k stars 1.06k forks source link

Can't update 3.2.0 cli to 4.0.0 #8668

Closed davidchieregato closed 2 years ago

davidchieregato commented 2 years ago

Describe the bug

Hello,

When I run any lb4 command I get prompted about cli compatibility

lb4 controller                                                                  
The project was originally generated by @loopback/cli@<unknown>.                                                        
The following dependencies are incompatible with @loopback/cli@3.2.0:                                                   dependencies                                                                                                            
- @loopback/authentication: ^9.0.0 (cli ^8.1.2)                                                                         
- @loopback/boot: ^5.0.0 (cli ^4.1.2)                                                                                   
- @loopback/context: ^5.0.0 (cli ^4.1.2)                                                                                
- @loopback/core: ^4.0.0 (cli ^3.1.2)                                                                                   
- @loopback/repository: ^5.0.0 (cli ^4.1.2)                                                                             
- @loopback/service-proxy: ^5.0.0 (cli ^4.1.2)                                                                          
- @loopback/http-server: ^4.0.0 (cli ^3.1.2)                                                                            
- @loopback/rest-explorer: ^5.0.0 (cli ^4.1.2)                                                                          
- @loopback/authorization: ^0.12.0 (cli ^0.11.2)                                                                        
- @loopback/authentication-jwt: ^0.12.0 (cli ^0.11.2)                                                                   
- devDependencies                                                                                                         
- @types/node: ^17.0.38 (cli ^12.20.47)                                                                                 
- @loopback/build: ^9.0.0 (cli ^8.1.2)                                                                                  
- @loopback/testlab: ^5.0.0 (cli ^4.1.2)                                                                                
peerDependencies 

And later after skipping updates which would downgrade everything I get the notice that an update for the CLI is available:

Update available 3.2.0 → 4.0.0
Run npm i -g @loopback/cli to update

and after running the command it will stay at 3.2.0 without updagring, npm outdated -g also doesn't show any update available.

I also added

{
  "@loopback/cli": {
    "version": "3.2.0"
  }
}

In .yo-rc.json but it will still show generated by @loopback/cli@.

Logs

lb4 -v                                                                          

@loopback/cli version: 3.2.0                                                                                                                                                                                                                    @loopback/* dependencies:                                                                                                 
- @loopback/authentication: ^8.1.2                                                                                      
- @loopback/boot: ^4.1.2                                                                                                
- @loopback/build: ^8.1.2                                                                                               
- @loopback/context: ^4.1.2                                                                                            
- @loopback/core: ^3.1.2                                                                                                
- @loopback/metadata: ^4.1.2                                                                                            
- @loopback/openapi-spec-builder: ^4.1.2                                                                                
- @loopback/openapi-v3: ^7.1.2                                                                                          
- @loopback/repository-json-schema: ^5.1.2                                                                              
- @loopback/repository: ^4.1.2                                                                                          
- @loopback/rest: ^11.1.2                                                                                              
- @loopback/testlab: ^4.1.2                                                                                             
- @loopback/docs: ^4.0.4                                                                                                
- @loopback/example-hello-world: ^4.1.2                                                                                 
- @loopback/example-log-extension: ^4.1.2                                                                               
- @loopback/example-rpc-server: ^4.1.2                                                                                  
- @loopback/example-todo: ^5.1.2                                                                                        
- @loopback/example-soap-calculator: ^4.1.2                                                                             
- @loopback/service-proxy: ^4.1.2                                                                                       
- @loopback/http-caching-proxy: ^3.1.2                                                                                  
- @loopback/http-server: ^3.1.2                                                                                         
- @loopback/example-todo-list: ^5.1.2                                                                                   
- @loopback/dist-util: ^0.4.0                                                                                           
- @loopback/rest-explorer: ^4.1.2                                                                                       
- @loopback/eslint-config: ^12.0.4                                                                                      
- @loopback/example-express-composition: ^4.1.2                                                                         
- @loopback/example-greeter-extension: ^4.1.2                                                                           
- @loopback/booter-lb3app: ^3.1.2                                                                                      
- @loopback/example-lb3-application: ^4.1.2                                                                             
- @loopback/example-greeting-app: ^4.1.2                                                                                
- @loopback/example-context: ^4.1.2                                                                                     
- @loopback/repository-tests: ^0.20.2                                                                                   
- @loopback/health: ^0.10.2                                                                                             
- @loopback/authorization: ^0.11.2                                                                                      
- @loopback/rest-crud: ^0.13.2                                                                                          
- @loopback/security: ^0.7.2                                                                                            
- @loopback/authentication-passport: ^4.1.2                                                                             
- @loopback/example-metrics-prometheus: ^0.9.2                                                                          
- @loopback/metrics: ^0.10.2                                                                                            
- @loopback/model-api-builder: ^3.1.2                                                                                   
- @loopback/logging: ^0.8.2                                                                                             
- @loopback/example-access-control-migration: ^4.1.2                                                                    
- @loopback/example-file-transfer: ^3.1.2                                                                               
- @loopback/example-rest-crud: ^3.1.2                                                                                   
- @loopback/apiconnect: ^0.9.2                                                                                          
- @loopback/example-validation-app: ^3.1.2                                                                              
- @loopback/cron: ^0.8.2                                                                                                
- @loopback/example-multi-tenancy: ^0.12.2                                                                              
- @loopback/example-passport-login: ^3.1.2                                                                              
- @loopback/authentication-jwt: ^0.11.2                                                                                 
- @loopback/context-explorer: ^0.7.2                                                                                    
- @loopback/express: ^4.1.2                                                                                             
- @loopback/example-todo-jwt: ^3.1.2                                                                                    
- @loopback/mock-oauth2-provider: ^0.5.2                                                                                
- @loopback/pooling: ^0.7.2                                                                                             
- @loopback/typeorm: ^0.6.2                                                                                             
- @loopback/example-graphql: ^0.6.2                                                                                     
- @loopback/graphql: ^0.7.2                                                                                             
- @loopback/filter: ^2.1.2                                                                                              
- @loopback/rest-msgpack: ^0.7.2                                                                                        
- @loopback/example-binding-resolution: ^0.6.2                                                                          
- @loopback/example-webpack: ^0.7.2                                                                                     
- @loopback/example-socketio: ^0.5.2                                                                                    
- @loopback/socketio: ^0.5.2                                                                                            
- @loopback/monorepo: ^0.4.4                                                                                            
- @loopback/tsdocs: ^3.1.2

Additional information

No response

Reproduction

issue is obvious

dhmlau commented 2 years ago

I just upgraded the cli from 3.2.0 to 4.1.0, and no issue encountered. I'm using Node.js 16.13.1 and npm 8.5.5 on MacOS. Not sure if it makes a difference. Since @loopback/cli@4.1.0 was published yesterday, maybe you want to give it a try?

davidchieregato commented 2 years ago
npm list -g                                                                     
/usr/lib                                                                                                                
├── @loopback/cli@4.1.0

I found out that lb4 -v is not consistent with the version shown by npm, it seems that npm actually updated the cli globally, but the lb4 command doesn't get the correct version

lb4 -v                                                                          
@loopback/cli version: 3.2.0

Any lb4 command still shows update available from 3.2.0 to 4.1.0

Update: platform following Node v16.14.2 npm 8.12.1 WSL2 Ubuntu 20.04 on Windows 11

dhmlau commented 2 years ago

That's strange. Here is my output for lb4 -v:

$lb4 -v
@loopback/cli version: 4.1.0

@loopback/* dependencies:
  - @loopback/authentication: ^9.0.1
  - @loopback/boot: ^5.0.1
  - @loopback/build: ^9.0.1
  - @loopback/context: ^5.0.1
  - @loopback/core: ^4.0.1
  - @loopback/metadata: ^5.0.1
  - @loopback/openapi-spec-builder: ^5.0.1
  - @loopback/openapi-v3: ^8.0.1
  - @loopback/repository-json-schema: ^6.0.1
  - @loopback/repository: ^5.0.1
  - @loopback/rest: ^12.0.1
  - @loopback/testlab: ^5.0.1
  - @loopback/docs: ^5.1.0
  - @loopback/example-hello-world: ^5.0.1
  - @loopback/example-log-extension: ^5.0.1
  - @loopback/example-rpc-server: ^5.0.1
  - @loopback/example-todo: ^6.0.1
  - @loopback/example-soap-calculator: ^5.0.1
  - @loopback/service-proxy: ^5.0.1
  - @loopback/http-caching-proxy: ^4.0.1
  - @loopback/http-server: ^4.0.1
  - @loopback/example-todo-list: ^6.0.1
  - @loopback/dist-util: ^0.4.0
  - @loopback/rest-explorer: ^5.0.1
  - @loopback/eslint-config: ^13.0.1
  - @loopback/example-express-composition: ^5.0.1
  - @loopback/example-greeter-extension: ^5.0.1
  - @loopback/booter-lb3app: ^4.0.1
  - @loopback/example-lb3-application: ^5.0.1
  - @loopback/example-greeting-app: ^5.0.1
  - @loopback/example-context: ^5.0.1
  - @loopback/repository-tests: ^0.21.1
  - @loopback/health: ^0.11.1
  - @loopback/authorization: ^0.12.1
  - @loopback/rest-crud: ^0.15.0
  - @loopback/security: ^0.8.1
  - @loopback/authentication-passport: ^5.0.1
  - @loopback/example-metrics-prometheus: ^0.10.1
  - @loopback/metrics: ^0.11.1
  - @loopback/model-api-builder: ^4.0.1
  - @loopback/logging: ^0.9.1
  - @loopback/example-access-control-migration: ^5.0.1
  - @loopback/example-file-transfer: ^4.0.1
  - @loopback/example-rest-crud: ^4.0.1
  - @loopback/apiconnect: ^0.10.1
  - @loopback/example-validation-app: ^4.0.1
  - @loopback/cron: ^0.9.1
  - @loopback/example-multi-tenancy: ^0.13.1
  - @loopback/example-passport-login: ^4.0.1
  - @loopback/authentication-jwt: ^0.12.1
  - @loopback/context-explorer: ^0.8.1
  - @loopback/express: ^5.0.1
  - @loopback/example-todo-jwt: ^4.0.1
  - @loopback/mock-oauth2-provider: ^0.6.1
  - @loopback/pooling: ^0.8.1
  - @loopback/typeorm: ^0.7.1
  - @loopback/example-graphql: ^0.7.1
  - @loopback/graphql: ^0.8.1
  - @loopback/filter: ^3.0.1
  - @loopback/rest-msgpack: ^0.8.1
  - @loopback/example-binding-resolution: ^0.7.1
  - @loopback/example-webpack: ^0.8.1
  - @loopback/example-socketio: ^0.6.1
  - @loopback/socketio: ^0.6.1
  - @loopback/monorepo: ^0.5.1
  - @loopback/tsdocs: ^4.0.1
  - @loopback/example-references-many: ^6.0.1

It seems to have the latest. I'm not sure what suggestion I could make other than uninstall/reinstall @loopback/cli globally.

davidchieregato commented 2 years ago

So, it seems that the problem is not related to loopback but it has something to do with how linux manages /usr/bin and /usr/local/bin, I solved it by removing manually the lb4 binary, npm uninstall would not remove it.

which lb4
/usr/local/bin/lb4

sudo rm -rf /usr/local/bin/lb4
sudo npm install -g @loopback/cli

lb4 -v
command not found

which lb4
/usr/bin/lb4

hash lb4
//hash drops executable location hash to update the path

lb4 -v                                                                                         
@loopback/cli version: 4.1.0                                                                                                                                                                                                                    @loopback/* dependencies:                                                                                                 - @loopback/authentication: ^9.0.1
...