"cordova.file" Undefined in Intel XDK - javascript

I´m trying to use cordova file plugin for my app (Android) in Intel XDK but when I make a simple verification like "console.log(cordova.file);" the console shows me: "Uncaught TypeError: Cannot read property 'file' of undefined"
I separated the code to isolate the issue:
<!DOCTYPE html>
<html>
<head>
<title>Some title</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script src="js/app.js"></script>
<script src="xdk/init-dev.js"></script>
<script>
window.addEventListener('load', function(){
if (window.Cordova) {
document.addEventListener('DeviceReady', onDeviceReady, false);
} else {
console.log("Not ready yet");
}
}, false);
function onDeviceReady() {
console.log(cordova.file); <---ERROR HERE
}
</script>
</head>
<body>
</body>
</html>
I included in my projects the cordova plugin-file, plugin-file-transfer and inAppBrowser. Also I included a cordova.js file downloaded by separated because my project didnt have it, I removed it because it wasn't helping at all.
I saw that some people modifies config.xml but I dont have that file in Intel XDK. My Intel XDK version is 3522 and the plugin file version is 4.2.0
Please somebody help me I´m stuck and this is the only issue I must solve to finish a project
Thanks
UPDATE: I saw that the problem is that the OnDeviceReady is never fired, what can I do?

Related

Socket.io - socket.io.js not available

I need to get a socket.io server running using python.
I followed this example:
https://tutorialedge.net/python/python-socket-io-tutorial/
With the final files looking as follows:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
<button onClick="sendMsg()">Hit Me</button>
<!--WORKS:-->
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>-->
<!-- DOESNT WORK:-->
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
<script>
const socket = io("http://localhost:8080");
function sendMsg() {
socket.emit("message", "HELLO WORLD");
}
socket.on("message", function(data) {
console.log(data);
});
</script>
</body>
</html>
server.py
from aiohttp import web
import socketio
sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)
async def index(request):
with open('index.html') as f:
return web.Response(text=f.read(), content_type='text/html')
#sio.on('message')
async def print_message(sid, message):
print("Socket ID-: " , sid)
print(message)
await sio.emit('message', message[::-1])
app.router.add_get('/', index)
if __name__ == '__main__':
web.run_app(app)
So much this is only copy paste and thus works fine, but I dont want to use the script from some online source. So I tried to modify the src of the script by commenting out the running version and replacing it by a version using a local socket.io.js.
As I did not find the script on my machine I found the following questions, that both did not help me solve my issue:
node-js-socket-io-socket-io-js-not-found
socket-io-not-being-served-by-node-js-server
No matter what I do I get the following error in my browser:
GET http://localhost:8080/node_modules/socket.io/socket.io.js net::ERR_ABORTED 404 (Not Found)
(index):18 Uncaught ReferenceError: io is not defined
at (index):18
(anonymous) # (index):18
From what I understood from the 2 linked threads, my server should provide the socket.io/socket.io.js when listen is called on the server.
Unfortunately this is not happening in my case.
I had socket.io installed via pip, I also tried npm install socket.io --save as suggested, this gives me a new folder 'node_modules', but modifying the src for my script to:
<script src="http://localhost:8080/node_modules/socket.io/socket.io.js"></script>
doesnt help either.
For some reason using the fie from cdnjs works just fine (see my index.html).
I would be very glad if someone could help me out with this.
Cheers
Chris
I've never worked with AIOHTTP (always worked with flask-socketio) so I did some research using the documentation. It turns out that like a lot of http server, AIOHTTP doesn't serve static files out of the box.
You will thus need to take care of it using the add_static method (doc here).
(Note that if you want to deploy this app for production it would be better practice to use an HTTP server like Apache or Nginx).
Just add this line under your routes declarations.
app.router.add_static('/static/', path='static/')
Now you need to create a static folder in the root of your project and put your socket.io.js file inside of it.
Make sure that the socket.io.js in the version 2.2 (same as the CDN version). You can get this file by downloading it directly from the CDN URL you were using or using npm -i -s socket.io-client#2.2. You can then find the socket.io.js file in node_modules/socket.io-client/dist.
You now just need to use <script src="/static/socket.io.js"></script> in your HTML to import socket.io.

Using s3, node js

i'm trying to make a http request using 'request' for nodeJS. But it doesn't work.
It keeps writing 'require is not defined'. I have uploaded my index.html file to my s3 bucket, as well as my node_modules folder and my package.json file.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.20/browser.min.js"></script>
<script data-main="js.config" src="js/r.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
const request = require('request');
</script>
This is how the index.html file looks like. It's not the whole file. But it's only the 'require' part is making trouble..
Let me know if you need any more info.
Hope someone can help.
You cannot use the request package on a client side script in that way, pointed out by many of the comments posted. That being said, if you want to have an App with a Node JS Backend for the serverside, you probably shouldn't be using AWS S3 anyways. There are many options for you if you plan to make a Backend App with Node JS:
AWS EC2 with Node JS
AWS Lambda
AWS Elastic Beanstalk
Some of these options, notably the EC2 and Lambda, have free tier options. Hopefully this helps you.

Uncaught SyntaxError: Unexpected token when using localhost

I am new to javascript, need help.
I have created a index.html and a app.js (both in same path), and have hosted the index.html as localhost.
When I run individual index.html I do get the hello alert, but when I run using localhost I get "Uncaught SyntaxError: Unexpected token <" error.
Below is the code that i used:
Index.html:
<!DOCTYPE HTML>
<html>
<head>
<title>Show Javascript alert</title>
<script type="text/javascript" src="app.js"></script>
</head>
<body>
</body>
</html>
app.js:
function display_alert(){
alert("Hello!");
}
window.onload = display_alert;
I think the Webserver is not serving your app.js File. Have you tried to open it in your Browser, to check if the Path is right?(e.g. http://localhost/app.js).
Check if the Name of the File is Lowercase as well and if the Webserver has read Permissions on the File.

Node.js Debug Gif

Trying to work on some code that has no issues on other computers. This problem seems to be specific to my laptop and no other computers. Even a "hello world" app only returns a debug gif.
repository folder> node app.js
Express Server Listening on port 3000
GET / 200 1000.00 ms - -
This is the code delivered to the browser instead of my code
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, minimum-scale=0.1" name="viewport">
<title>127.0.0.1 (1×1)</title>
<style type="text/css">
</style>
</head>
<body style="margin: 0px;">
<img src="http://127.0.0.1:3000/" style="-webkit-user-select: none">
</body>
</html>
Troubleshooting included:
Ran cmd as admin
Re-installing Node.js
Deleted temp npm & npm cache folders in appdata/roaming
No error on the development tools in chrome or Firefox
Kaspersky blocks 127.0.0.1 activity. Add Web Anti-Virus Exclusions Trusted URLS & Safe Surf fixes this issue.
Simply disabling the Antivirus didn't fix the issue for me. The Exclusions are a necessity

Phonegap/Cordova Device API is undefined on Android

I Have a problem with Cordova/Phonetgap Device API, the objetc device isn't found. I make callback to device.model or any fecture of device and return:
ReferenceError: Can't find variable: device at file:///android_asset/www/index.html:16
I'm following this steps: http://cordova.apache.org/docs/en/3.3.0/cordova_device_device.md.html#Device firts create the cordova android project and later I Install plugin device through: "cordova plugin add org.apache.cordova.device" I'm testing with this index.html:
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
var string = device.platform;
var element = document.getElementById('deviceProperties');
element.innerHTML = string;
}
</script>
</head>
<body>
<p id="deviceProperties">Loading device properties...</p>
</body>
</html>
I have in app/res/xml/config.xml this lines:
<feature name="Device">
<param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
Here There is a screenshot for more details:
https://dl.dropboxusercontent.com/u/6404856/Helpme.JPG
as I see you're using eclipse, did you run cordova prepare android or cordova build android after you installed the plugin? (be aware that it will overwrite your assets/www folder with the content of the www folder at the root of the project)
Your code looks good to me. Try running cordova plugin ls and make sure the device plugin shows up. Also try uninstalling then reinstalling it. If that doesn't work then try deleting the your_project/plugins/android.json file, reinstall plugin, then build the android platform. Sometimes the android.json doesn't get updated correctly and this messes it all up.

Categories

Resources