Expo v27/v28 Android App with websocket is crashing - android

Environment: Android 6 Marshmallow and iOS(all versions)
Error: Android app with WebSockets is crashing with error:
WebSocketModule.close got 1 arguments, expected 3.
The error happens when I close the WebSocket connection just on Android, for instance:
this.ws = new WebSocket(url);
this.ws.onopen = () => {
const command = { command: 'JOIN', room: roonHash };
this.ws.send(JSON.stringify(command));
};
this.ws.onmessage = e => {
//more code here
};
// Finally:
this.ws.close();
iOS:
On iOS it works fine.
I'm using Expo v27 but I got the same error on v28.
Is there any workaround fixing that until the Expo/React Native team fixes it forever?

Expo v27
Update your React Native/Expo v27.0.0 to v27.0.2 on your package.json
Expo v28
Update your React Native/Expo v28.0.0 to v28.0.1 on your package.json
Procedures:
1) Go to your package.json file and change the version of your expo, for example:
From:
"react-native": "https://github.com/expo/react-native/archive/sdk-27.0.0.tar.gz",
To:
"react-native": "https://github.com/expo/react-native/archive/sdk-27.0.2.tar.gz",
2) Delete your node_modules:
$ rm -rf node_modules
3) Install it again:
$ yarn install

Related

Use Firebase In-App-Messaging in Expo Project

I'm trying to add in a built-in application with react-native-expo a series of tools from firebase.I managed to add the following features Cloud Messaging and Firebase Analitycs.But I have to integrate In-app-messaging and Dynamic links
First time I install all firebase module/dependencies to do this task.
"#react-native-firebase/app": "^12.9.3",
"#react-native-firebase/in-app-messaging": "^12.9.3",
and my file looks like:
.......
import inAppMessaging from '#react-native-firebase/in-app-messaging
.......
useEffect(()=>{
await inAppMessaging().setMessagesDisplaySuppressed(true);
}[])
but I recive a warning:
]Unhandled promise rejection: Error: You attempted to use a firebase module that's not installed on your Android project by calling firebase.app().
After that I try to find a solution,I learn that expo allow to create plugins to extend expo functionality
I tty to salve problem fallow expo documentation but I couldn't figure out how to create these plugins.
Next I find a module that can help me with-rn-firebase but is not working and the module is depeciated.
Then I searched the internet until I discovered other people with the same problem this is the link I see in their app.json a basic config of plugin and I try to implement in my project,after I install dependencies that I need i add in my file:
"plugins": [
"#react-native-firebase/app",
"#react-native-firebase/analytics",
"#react-native-firebase/in-app-messaging"
],
But the fallowing error occure:
Package "#react-native-firebase/analytics" does not contain a valid config plugin.
Learn more: https://docs.expo.io/guides/config-plugins/#creating-a-plugin
Cannot use import statement outside a module
What I mean is, if anyone has ever faced this problem, I want in my project to be able to use in-app-messaging and dynamyc-links if someone has tried an implementation with expo and has any idea
Eventually I solved the problem,expo when I use the command expo:build android it only compiles my javascript files,but some of the code was written in java and other optional files in the android / ios folder.So instead of compiling with expo I used eas.
Faloowing command:
Run as administrator cmd and write this line npm install -g eas-cli.
Initialize new module in your expo/react native project with this line eas init.
Build aplication using this line for android: eas build --platform android
*For ios is a bit different you mast edit your file eas.json:
{
"cli": {
"version": ">= 0.43.0"
},
"build": {
"development": {
"distribution": "internal",
"android": {
"gradleCommand": ":app:assembleDebug"
},
"ios": {
"buildConfiguration": "Debug"
}
},
"preview": {
"distribution": "internal"
},
"production": {
"ios": {
"cocoapods": "1.11.2"
}
}
},
"submit": {
"production": {}
}
}
Build aplication using this line for ios: eas build --platform ios
Eas build include in complile all app file .gradle/.js/.java/.xml/.m/.h and this thing offer your posibility to build mobile app in expo with same functionality and complexity like react native cli.
Usefull Link
https://docs.expo.dev/build/setup/
React Native Expo Build Failing due to cocoapods version
I think you need to run locally using expo dev client
https://docs.expo.dev/development/getting-started/
Mostly, the package that is not supported by expo can run natively. But you need successfully built in eas build.

Jenkins doesn't recognize IONIC as command

I'm currently setting up Jenkins for a IONIC Project of mine.
I've got a Jenkinsfile with the following content:
pipeline {
agent any
stages {
stage ('NPM Setup'){
steps{
bat 'npm install'
}
}
stage('Android Build'){
steps{
bat 'ionic cordova build android --release'
}
}
}
}
Jenkins causes an Error with the following Errormessage:
The "ionic" command is either misspelled or could not be found.
What am i doing wrong here or is there anything i didn't configure for it to run?
The code is stored in a git-repo if this is anything interesting.
Kind regards
Crooky
add ionic cli to your package.json dependencies.
use npx. This command line is bundled with node since version 5.2.0
stage('Android Build'){
steps{
bat 'npx ionic cordova build android --release'
}
}

React Native Navigation React Native CLI Autolinking error

Issue Description
I installed the library via npx react-native link react-native-navigation (and modifying the minSdkVersion in andoid/build.gradle).
When I run npx react-native run-android, the app is built and works fine, though I get the following error in the terminal:
error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually:
- react-native-navigation (to unlink run: "react-native unlink react-native-navigation")
Since the lib has been linked manually, I add an entry in the react-native.config.js file to prevent react native to try to autolink the lib, as in:
module.exports = {
dependencies: {
'react-native-navigation': {
platforms: {
android: null, // disable Android platform, other platforms will still autolink if provided
},
}
}
};
Now, the CLI error is not longer shown and the app is successfully built, but I get an error in the emulator:
TypeError: null is not an object (evaluating "this.nativeCommandsModule.setRoot()").
Which comes about at my first Navigation.setRoot(...); call:
[index.js]
const start = () => {
Navigation.events().registerAppLaunchedListener(() => {
registerScreens();
gotoInitialising();
// gotoLogin();
});
};
start();
My question is, what extra step should I take to get the lib to work and to not have a React Native CLI error, at the same time.
Environment
React Native Navigation version: 6.0.1
React Native version: 0.61.5
Platform(s) (iOS, Android, or both?): Android
Device info (Simulator/Device? OS version? Debug/Release?): Android emulator API 28 - (emulator version 29.2.1-5889189) - Debug build
FYI, since react-native-navigation#6.1.0, the link script has been fixed to update the minSDK for android as well.
Also you should not add react-native-navigation in react-native.config.js as the RNN library is required to be used in your native code. The team has updated the documentation to make the installation guide clearer: https://wix.github.io/react-native-navigation/docs/installing. If you follow the guide, it should be quite straightforward.
run the following command: react-native unlink react-native-navigation

Ionic Codepush Cordova not available after sync

i'm trying to implement Code-Push from AppCenter into my Ionic v4 App. (ref)
I'm stuck on the following Problem: I can update the App, but when i close the App after that and open again it is the old Version again and it says:
Updade ignored, because it was rollbacked
So somehow the update is rolled back after i close the App. After searching for this problem i found that i have to run
this.codePush.notifyApplicationReady()
on application start. I added this to my code, but it doesn't work either. If i run the Application on a Android Emulator and open the Logs, AFTER the Update it says:
cordova_not_available
So it makes sense that the notifyApplicationReady doesn't work, but why is cordova unavailable?
initializeApp() {
this.platform.ready().then(() => {
this.statusBar.styleDefault();
this.codePush.notifyApplicationReady().then(value => {
console.log(value);
});
this.codePush.sync({
deploymentKey: 'MY_KEY',
installMode: InstallMode.IMMEDIATE
}).subscribe(status => {
console.log(status);
});
this.splashScreen.hide();
});
}
Do u use command ionic build --prod ? this conmand will not include cordova.js,so if app installed this package the cordova will not available, in ionic4 i use ionic cordova build android --prod to include the cordova.js and then release the www file to code push serve.it wokrs!

Ionic v2 create project issue

I'm trying to get ionic2 up and running by following the Getting Started page. I ran the npm -g install cordova ionic command in step one and everything seemed fine but when I ran step two ionic start --v2 myApp tabs I received errors.
CCasadMBP:Sites ccasad$ ionic start --v2 myAppv2 tabs
/Users/ccasad/.npm-packages/lib/node_modules/ionic/node_modules/ionic-app-lib/lib/start_wizard.js:94
ps.stdout.on('data', (data) => {
^^
SyntaxError: Unexpected token =>
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.start_wizard (/Users/ccasad/.npm-packages/lib/node_modules/ionic/node_modules/ionic-app-lib/index.js:25:12)
at Object.<anonymous> (/Users/ccasad/.npm-packages/lib/node_modules/ionic/lib/ionic/start.js:13:30)
at Module._compile (module.js:460:26)
/Users/ccasad/.npm-packages/lib/node_modules/ionic/node_modules/ionic-app-lib/lib/start_wizard.js:94
ps.stdout.on('data', (data) => {
^^
Unexpected token => (CLI v2.2.1)
Your system information:
Cordova CLI: 6.5.0
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
ios-deploy version: 1.8.2
ios-sim version: 5.0.3
OS: OS X Yosemite
Node Version: v0.12.6
Xcode version: Xcode 7.2.1 Build version 7C1002
I've had things running fine for ionic v1 so not sure why things in npm aren't working for v2. The error almost seems like it doesn't understand ES6 arrow functions or something since it's saying unexpected token on the =>.
Any ideas how to deal with this? Do I need to reinstall node?
Thanks
Best way uninstall and delete node from C:\Program Files or C:\Program Files (x86) and install the latest version.
OR
This is a ionic bug in this file
C:\Users\{user}\AppData\Roaming\npm\node_modules\ionic\node_modules\ionic-app-lib\lib\start_wizard.js
For compile this syntax of node.js you need to new version of Node.js and so you must be change all lambda syntax from function to normalize codes for older versions:
ps.stdout.on('data', (data) => {
var d = data.toString('utf-8');
if(d.indexOf('dev server running') >= 0) {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify({
'status': 'success'
}));
}
process.stdout.write(d);
});
To :
ps.stdout.on('data',function (data) {
var d = data.toString('utf-8');
if(d.indexOf('dev server running') >= 0) {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify({
'status': 'success'
}));
}
process.stdout.write(d);
});
Full Correct file : Download
I am not sure this way it could work for you, even i had a issue i have resolved this way . I believe look like node migration issue .Try to set latest version (e.g 6.9.4).Before doing do clean npm and then install.Hope this should work

Categories

Resources