android-js / androidjs

Platform to build android app using node js
MIT License
466 stars 109 forks source link

App crashes with Mongodb (project-type: webview) on Android #254

Open emartisoft opened 2 years ago

emartisoft commented 2 years ago

In sample apps, I tried story-apps. After execute "androidjs build", APK file is created and It works on Android. To connect mongodb, added following code lines but It crashed :(

package.json file content

{ "name": "myapp", "app-name": "myapp", "package-name": "mypkg", "project-type": "webview", "icon": "./assets/icon/icon.png", "permission": [ "android.permission.INTERNET", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE" ], "version": "1.0.0", "dist-path": "./dist", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "androidjs": "^2.0.4", "mongodb": "^4.9.1" }, "theme": { "fullScreen": true } }

main.js file content (added lines by me only)

> 
> back.on("fromFront", function(){
>     var MongoClient = require('mongodb').MongoClient;
>     var uri = "mongodb://root:123456@mycluster-shard-00-00.xbzha.gcp.mongodb.net:27017,mycluster-shard-00-01.xbzha.gcp.mongodb.net:27017,mycluster-shard-00-02.xbzha.gcp.mongodb.net:27017/?ssl=true&replicaSet=atlas-5h0gg8-shard-0&authSource=admin&retryWrites=true&w=majority";
>     MongoClient.connect(uri, function(err, client) {
>         const collection = client.db("myDB").collection("myCollection");
>         var cursor = collection.find({Ad: 'Murat'});
>         cursor.forEach(function(item) {
>             if (item != null) {
>                     //console.log(item.Ad + "\t" + item.Soyad);
>                     back.send("fromback", item.Soyad);
>             }
>         }, function(err) {
>             if (err) console.log(err);
>             client.close();
>             });
>     });
> 
> });
> 

index.html content (added lines by me only)

> <body>
> 
> ...
> 
> <a href="javascript:void(getJSON());">get JSON data</a>
> <h1>data</h1>
> <div id='jsondata'></div>
> 
> ...
> 
> <script>
> 
> function getJSON(){
>       front.send("fromFront");
>   
>   };
> 
>     front.on("fromback", function(data){
>       console.log(data);
>       //$('jsondata').html(data);
>         document.getElementById('jsondata').innerHTML = data;
>         playsid(data);
>     });
> 
> </script>
> 
> ...
> 
> </body>

On Windows, It works. On Android, It works but until back.on function and it crashes. Your advices?

NavpreetDevpuri commented 1 year ago

@emartisoft It looks like the old NodeJs version is the reason for that same as https://github.com/android-js/androidjs/issues/282